did_story

[Redis] Redis๋Š” ๋ฌด์—‡์ผ๊นŒ? ๋ณธ๋ฌธ

BackEnd๐Ÿƒ

[Redis] Redis๋Š” ๋ฌด์—‡์ผ๊นŒ?

์–ด์ œ์‹œ์ž‘ 2025. 8. 29. 15:13
root๋ผ๋Š” ๋ถ„์‚ฐ๋œ ๋งํฌ ์ €์žฅ ์„œ๋น„์Šค๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ์ค‘์— ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์ƒํ™ฉ์—์„œ ๋ณ‘๋ชฉ์ด ์ƒ๊ธฐ๋Š” ํ˜„์ƒ์„ ๋ฐœ๊ฒฌํ•˜์˜€๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋ฐฉ๋ฒ•์„ ์ฐพ์•„๋ณด๋˜ ์ค‘ ์ด์ „์— chatting์„ ๊ตฌํ˜„ํ•  ๋•Œ ์‚ฌ์šฉํ–ˆ๋˜ redis๋ฅผ ์‚ฌ์šฉํ•ด๋ณด๋Š” ๊ฒƒ์„ ์–ด๋–จ๊นŒ ์ƒ๊ฐ์„ ๊ฐ€์กŒ๊ณ , ์ง์ ‘ ๊ฐœ๋ฐœ๊นŒ์ง€ ์ด์–ด์ง€๋Š” ๊ณผ์ •์„ ์จ๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ ๋ธ”๋กœ๊ทธ๋Š” Redis๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์‚ดํŽด๋ณด๋ฉฐ ์‚ฌ์šฉํ•œ ์ด์œ ๋ฅผ ๋ณด์—ฌ๋“œ๋ฆฌ๋ ค ํ•ฉ๋‹ˆ๋‹ค.

 

Redis๋Š” ‘Remote Dictionary Server’์˜ ์•ฝ์ž๋กœ, ์˜คํ”ˆ ์†Œ์Šค ๊ธฐ๋ฐ˜์˜ ์ธ ๋ฉ”๋ชจ๋ฆฌ(In-memory) ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ์บ์‹œ, ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค ๋“ฑ ๋‹ค์–‘ํ•œ ์šฉ๋„๋กœ ์‚ฌ์šฉ๋˜๋ฉฐ, ํ‚ค-๊ฐ’(Key-Value) ๊ตฌ์กฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€๋Š” ๋‹ฌ๋ฆฌ, ๋””์Šคํฌ๊ฐ€ ์•„๋‹Œ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋งค์šฐ ๋น ๋ฅธ ๋ฐ์ดํ„ฐ ์•ก์„ธ์Šค ์†๋„๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

Redis์˜ ํ‚ค-๊ฐ’ ์ €์žฅ์†Œ์™€ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ์ง€์›

Redis๋Š” ๋‹จ์ˆœํ•œ ํ‚ค-๊ฐ’ ์ €์žฅ์†Œ ์ด์ƒ์„ ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ž์—ด, ๋ฆฌ์ŠคํŠธ, ํ•ด์‹œ, ์…‹, ์ •๋ ฌ๋œ ์…‹ ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์ง€์›ํ•˜์—ฌ ๋ณด์žกํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์†์‰ฝ๊ฒŒ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์œ ์—ฐํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ๋•๋ถ„์—, ์†Œ์…œ๋ฏธ๋””์–ด์˜ ํ”ผ๋“œ ๊ด€๋ฆฌ ์‹ค์‹œ๊ฐ„ ์ˆœ์œ„ ๊ณ„์‚ฐ๋“ฑ์˜ ๋ณต์žกํ•œ ์ž‘์—…์„ ํšจ์œจ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆใ…ใ„ท.

์„ธ์…˜ ๊ด€๋ฆฌ

Redis๋Š” ์‚ฌ์šฉ์ž ์„ธ์…˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•˜์—ฌ ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์ธ ์„ธ์…˜ ๊ด€๋ฆฌ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

  • ์‚ฌ์šฉ์ž ์ธ์ฆ ์†๋„ ํ–ฅ์ƒ: ๋กœ๊ทธ์ธ ์‹œ ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ๋ฅผ ์ฆ‰๊ฐ์ ์œผ๋กœ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์–ด ์ธ์ฆ ์†๋„๋ฅผ ํฌ๊ฒŒ ๋†’์ž…๋‹ˆ๋‹ค.
  • ์„ธ์…˜ ๋งŒ๋ฃŒ ๊ด€๋ฆฌ: TTL(Time to Live)์„ ์„ค์ •ํ•ด ๋ถˆํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฐจ์ง€ํ•˜์ง€ ์•Š๋„๋ก ์ž๋™์œผ๋กœ ๋งŒ๋ฃŒ์‹œํ‚ต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋‹ค์ค‘ ์„œ๋ฒ„ ํ™˜๊ฒฝ ์ง€์›: Redis๋ฅผ ์ค‘์•™ ์„ธ์…˜ ์ €์žฅ์†Œ๋กœ ์‚ฌ์šฉํ•˜๋ฉด ์—ฌ๋Ÿฌ ์›น ์„œ๋ฒ„ ๊ฐ„ ์„ธ์…˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‰ฝ๊ฒŒ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์–ด ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ ํ™˜๊ฒฝ์—์„œ๋„ ์•ˆ์ •์ ์ธ ์„ธ์…˜ ๊ด€๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์บ์‹ฑ ์‹œ์Šคํ…œ

Redis๋Š” ์ž์ฃผ ์กฐํšŒ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์บ์‹ฑ ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ถ€ํ•˜๋ฅผ ์ค„์ด๊ณ  ๋น ๋ฅธ ์‘๋‹ต ์†๋„๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

  • ์ฝ๊ธฐ ๋ถ€ํ•˜ ๋ถ„์‚ฐ: ์ œํ’ˆ ์ •๋ณด, ํŽ˜์ด์ง€ ์ฝ˜ํ…์ธ  ๊ฐ™์€ ๊ณ ๋นˆ๋„ ์ฝ๊ธฐ ์š”์ฒญ์„ Redis์— ์บ์‹ฑ ํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ฝ๊ธฐ ๋ถ€ํ•˜๋ฅผ ๊ฐ์†Œ์‹œํ‚ต๋‹ˆ๋‹ค.
  • ๋ณต์žกํ•œ ์—ฐ์‚ฐ ์†๋„ ํ–ฅ์ƒ: ์ƒํ’ˆ ์ถ”์ฒœ์ด๋‚˜ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ์ฒ˜๋Ÿผ ๊ณ„์‚ฐ์ด ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ Redis์— ์ €์žฅํ•ด ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ ์‹œ ๋น ๋ฅด๊ฒŒ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋งŒ๋ฃŒ ์ •์ฑ… ์ง€์›: ์บ์‹ฑ ๋ฐ์ดํ„ฐ์— TTL์„ ์„ค์ •ํ•ด ์˜ค๋ž˜๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ž๋™์œผ๋กœ ์ œ๊ฑฐ, ์ตœ์‹  ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹ค์‹œ๊ฐ„ ๋ถ„์„

Redis๋Š” ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๊ฐ€ ์ค‘์š”ํ•œ ํ™˜๊ฒฝ์—์„œ ๋น ๋ฅธ ๋ฐ์ดํ„ฐ ์กฐํšŒ์™€ ์ง‘๊ณ„ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

  • ๋Œ€์‹œ๋ณด๋“œ ์—…๋ฐ์ดํŠธ: ํŠธ๋ž˜ํ”ฝ, ์‚ฌ์šฉ์ž ํ–‰๋™ ๋ฐ์ดํ„ฐ ๊ฐ™์€ ์ •๋ณด๋ฅผ Redis์— ์ €์žฅํ•ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋Œ€์‹œ๋ณด๋“œ์— ๋ฐ˜์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์‹ค์‹œ๊ฐ„ ํ†ต๊ณ„ ๊ณ„์‚ฐ: Redis์˜ Sorted Set์ด๋‚˜ Hash ๊ตฌ์กฐ๋ฅผ ํ™œ์šฉํ•ด ์‚ฌ์šฉ์ž ํ™œ๋™ ์ง‘๊ณ„๋‚˜ ์ˆœ์œ„ ๊ณ„์‚ฐ์„ ์ฆ‰์‹œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ: ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์ฒ˜๋ฆฌํ•ด ์ด์ƒ ์ง•ํ›„ ํƒ์ง€, ํŠธ๋žœ์žญ์…˜ ๋ชจ๋‹ˆํ„ฐ๋ง ๊ฐ™์€ ์‹œ์Šคํ…œ์— ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค.

๋ฉ”์‹œ์ง€ ํ

Redis์˜ Pub/Sub ๊ธฐ๋Šฅ์€ ์‹ค์‹œ๊ฐ„ ๋ฉ”์‹œ์ง€ ์ „์†ก๊ณผ ์ˆ˜์‹ ์„ ๊ฐ„๋‹จํ•˜๊ณ  ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

  • ์‹ค์‹œ๊ฐ„ ์•Œ๋ฆผ ์‹œ์Šคํ…œ: Redis๋ฅผ ํ™œ์šฉํ•˜๋ฉด ์ด๋ฉ”์ผ ์•Œ๋ฆผ, ํ‘ธ์‹œ ์•Œ๋ฆผ์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ „์†กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ฑ„ํŒ… ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜: ์‚ฌ์šฉ์ž ๊ฐ„ ๋ฉ”์‹œ์ง€๋ฅผ Redis๋ฅผ ํ†ตํ•ด ์ฆ‰์‹œ ์ „๋‹ฌํ•ด ๋Š๊น€ ์—†๋Š” ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ… ํ™˜๊ฒฝ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ŠคํŠธ๋ฆฌ๋ฐ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ: Redis Streams ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ฉด ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆฌ๋ฐ์„ ๊ด€๋ฆฌํ•˜๊ณ , ์—ฌ๋Ÿฌ ์†Œ๋น„์ž(Consumer)์—๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„๋ฐฐํ•  ์ˆ˜ ์žˆ์–ด ํ™•์žฅ์„ฑ์ด ๋›ฐ์–ด๋‚ฉ๋‹ˆ๋‹ค.

Redis๋Š” ์ธ ๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ์„œ ๋›ฐ์–ด๋‚œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋Šฅ๋ ฅ์„ ์ž๋ž‘ํ•ฉ๋‹ˆ๋‹ค. ๋†’์€ ์ฒ˜๋ฆฌ๋Ÿ‰๊ณผ ์˜์†์„ฑ ์˜ต์…˜ ๋•๋ถ„์— ์„ธ์…˜ ๊ด€๋ฆฌ, ์บ์‹ฑ ์‹œ์Šคํ…œ, ์‹ค์‹œ๊ฐ„ ๋ถ„์„, ๋ฉ”์‹œ์ง€ ํ์™€ ๊ฐ™์€ ํ”„๋กœ์ ํŠธ์—์„œ ํ™œ์šฉํ•˜๋ฉด ๋”์šฑ ํšจ๊ณผ์ ์ธ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์–ด์ง€๋Š” ๋‚ด์šฉ์—์„œ๋Š” Redis๋ฅผ ๋”์šฑ ํšจ๊ณผ์ ์œผ๋กœ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.