๐Ÿš€ Redis๊ฐ€ ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ๋กœ ๋™์ž‘ํ•˜๋Š” ์ด์œ  ๐Ÿค”

์„ํ˜„ยท2025๋…„ 1์›” 27์ผ
0

Insight

๋ชฉ๋ก ๋ณด๊ธฐ
11/43
post-thumbnail

์˜ค๋Š˜์˜ ์ด์•ผ๊ธฐ!

์ตœ๊ทผ Redis๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž์˜ ์‚ฌ์šฉ์ค‘์ธ ์šฉ๋Ÿ‰ ์ €์žฅ ๊ด€๋ จ์„ ์„ค๊ณ„ํ•˜๋ฉด์„œ "Redis๋Š” ์™œ ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ๋กœ ๋™์ž‘ํ• ๊นŒ?"๋ผ๋Š” ๊ถ๊ธˆ์ฆ์ด ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค. Redis๋Š” ์ธ๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ์œ ๋ช…ํ•˜์ง€๋งŒ, ์„ค๊ณ„ ์ฒ ํ•™๊ณผ ๋‚ด๋ถ€ ๊ตฌ์กฐ๋Š” ๋งŽ์€ ๊ฐœ๋ฐœ์ž๋“ค์—๊ฒŒ ํฅ๋ฏธ๋กœ์šด ์ฃผ์ œ๋ผ๊ณ  ์ƒ๊ฐ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฒˆ ๋ธ”๋กœ๊ทธ์—์„œ๋Š” Redis๊ฐ€ ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ๋กœ ์„ค๊ณ„๋œ ์ด์œ ์™€, Redis 6.0์—์„œ ์ถ”๊ฐ€๋œ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ์•Œ์•„๋ณธ๊ฒƒ์„ ์ •๋ฆฌํ•ด๋ณด๋ คํ•ฉ๋‹ˆ๋‹ค.


Redis๋Š” ์™œ ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ์ผ๊นŒ? ๐Ÿค”

Redis๋Š” ๋‹จ์ผ ์Šค๋ ˆ๋“œ(single-threaded) ๋ชจ๋ธ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋ช‡ ๊ฐ€์ง€ ์ด์œ ๋กœ ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค:

1. ์„ค๊ณ„์˜ ๋‹จ์ˆœํ™” ๋ฐ ์„ฑ๋Šฅ ์ตœ์ ํ™”

๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ๋Š” ๋™์‹œ์„ฑ ๋ฌธ์ œ(์˜ˆ: ๋ ˆ์ด์Šค ์ปจ๋””์…˜, ๋ฐ๋“œ๋ฝ ๋“ฑ)๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋ณต์žกํ•œ ๋™๊ธฐํ™” ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‹จ์ผ ์Šค๋ ˆ๋“œ ๋ชจ๋ธ์—์„œ๋Š” ์ด๋Ÿฌํ•œ ๋ณต์žก์„ฑ์„ ํ”ผํ•  ์ˆ˜ ์žˆ์–ด ์„ค๊ณ„๊ฐ€ ๋‹จ์ˆœํ•ด์ง€๊ณ , ์„ฑ๋Šฅ ์ตœ์ ํ™”๋„ ์šฉ์ดํ•ด์ง‘๋‹ˆ๋‹ค.

2. ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ ์œ ์ง€

๋ชจ๋“  ๋ช…๋ น์ด ์ˆœ์ฐจ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๊ธฐ ๋•Œ๋ฌธ์—, ๋ณต์žกํ•œ ๋ฝ(lock) ๋ฉ”์ปค๋‹ˆ์ฆ˜ ์—†์ด๋„ ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ์„ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3. ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ ์˜ค๋ฒ„ํ—ค๋“œ ๊ฐ์†Œ

๋‹จ์ผ ์Šค๋ ˆ๋“œ ์ด๋ฒคํŠธ ๋ฃจํ”„๋ฅผ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ์Šค๋ ˆ๋“œ ๊ฐ„ ์ „ํ™˜์— ๋”ฐ๋ฅธ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ตœ์†Œํ™”ํ•˜์—ฌ ๋น ๋ฅธ ์‘๋‹ต ์‹œ๊ฐ„์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

4. ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜

Redis๋Š” ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜(event-driven) ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ฑ„ํƒํ•˜์—ฌ ๋„คํŠธ์›Œํฌ ์š”์ฒญ์„ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ผ ์Šค๋ ˆ๋“œ ์ด๋ฒคํŠธ ๋ฃจํ”„๋Š” ๋น„๋™๊ธฐ์ ์œผ๋กœ ์—ฌ๋Ÿฌ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด ๋†’์€ ๋™์‹œ์„ฑ์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.


Redis 6.0์˜ ๋ณ€ํ™”: ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ์ง€์› ๐Ÿ†•

Redis 6.0๋ถ€ํ„ฐ๋Š” ๋„คํŠธ์›Œํฌ I/O ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ์ง€์›์ด ๋„์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ช…๋ น ์‹คํ–‰ ๋ถ€๋ถ„์€ ์—ฌ์ „ํžˆ ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

์™œ ๋„คํŠธ์›Œํฌ I/O๋งŒ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ์„๊นŒ?

  • Redis์˜ ์„ฑ๋Šฅ ๋ณ‘๋ชฉ ์ค‘ ํ•˜๋‚˜๋Š” ๋„คํŠธ์›Œํฌ ๋ฐ์ดํ„ฐ์˜ ์ฝ๊ธฐ/์“ฐ๊ธฐ ์ฒ˜๋ฆฌ์ž…๋‹ˆ๋‹ค.
  • ๋„คํŠธ์›Œํฌ I/O๋Š” ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๋กœ ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์ง€๋งŒ, ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ๊ณผ ์›์ž์„ฑ์„ ์œ„ํ•ด ๋ช…๋ น ์‹คํ–‰์€ ์—ฌ์ „ํžˆ ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ๋กœ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

์„ค์ • ์˜ˆ์‹œ

redis.conf ํŒŒ์ผ์—์„œ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ๋ฅผ ํ™œ์„ฑํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

# redis.conf ์„ค์ • ์˜ˆ์‹œ
# I/O ์Šค๋ ˆ๋“œ ๊ฐœ์ˆ˜ ์„ค์ • (0์œผ๋กœ ์„ค์ •ํ•˜๋ฉด ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ ๋น„ํ™œ์„ฑํ™”)
io-threads 4

# I/O ์Šค๋ ˆ๋”ฉ ํ™œ์„ฑํ™” ์—ฌ๋ถ€
io-threads-do-reads yes


Redis์˜ ์žฅ๋‹จ์  ์ •๋ฆฌ

์žฅ์ 

  • ์„ค๊ณ„ ๋‹จ์ˆœ์„ฑ: ๋ณต์žกํ•œ ๋™๊ธฐํ™” ๋ฉ”์ปค๋‹ˆ์ฆ˜ ํ•„์š” ์—†์Œ.
  • ์„ฑ๋Šฅ ์ตœ์ ํ™”: ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ ์˜ค๋ฒ„ํ—ค๋“œ ๊ฐ์†Œ.
  • ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ: ๋ช…๋ น์ด ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰๋˜๋ฏ€๋กœ ์•ˆ์ „.

๋‹จ์ 

  • CPU ์ฝ”์–ด ํ™œ์šฉ ์ œํ•œ: ๋‹จ์ผ ์Šค๋ ˆ๋“œ๋กœ ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— CPU ํ™œ์šฉ์ด ์ œํ•œ์ .
  • I/O ๋ณ‘๋ชฉ ๊ฐ€๋Šฅ์„ฑ: Redis 6.0 ์ด์ „ ๋ฒ„์ „์—์„œ๋Š” ๋„คํŠธ์›Œํฌ I/O ๋ณ‘๋ชฉ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ.

๋งˆ์น˜๋ฉฐ ๐ŸŒŸ

Redis๊ฐ€ ๋‹จ์ผ ์Šค๋ ˆ๋“œ๋กœ ์„ค๊ณ„๋œ ์ด์œ ๋Š” ์„ฑ๋Šฅ ์ตœ์ ํ™”, ์„ค๊ณ„์˜ ๋‹จ์ˆœํ™”, ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ ์œ ์ง€ ๋“ฑ ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. Redis 6.0๋ถ€ํ„ฐ๋Š” ๋„คํŠธ์›Œํฌ I/O์— ํ•œํ•ด ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์–ด ์„ฑ๋Šฅ์ด ๋”์šฑ ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์„ค๊ณ„ ์„ ํƒ์€ Redis๋ฅผ ๋น ๋ฅด๊ณ  ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์ธ๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ๋งŒ๋“ค์–ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

Redis๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ ๋‹จ์ผ ์Šค๋ ˆ๋“œ์™€ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ์˜ ํŠน์„ฑ์„ ์ดํ•ดํ•˜๊ณ , ํ”„๋กœ์ ํŠธ์— ๋งž๊ฒŒ ์ตœ์ ํ™”ํ•˜์—ฌ ํ™œ์šฉํ•ด๋ณด์„ธ์š”! ๐Ÿš€


0๊ฐœ์˜ ๋Œ“๊ธ€