๐Ÿ›ข๏ธDatabase

Redis ์•Œ๊ณ  ์‚ฌ์šฉํ•˜์ž!

DevPoong 2023. 8. 20. 21:55

1. Redis

Temporary Location For Speed

๋ฐ์ดํ„ฐ์˜ ์›๋ž˜ ์†Œ์Šค๋ณด๋‹ค ๋” ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์œผ๋กœ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ์ž„์‹œ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ

๋งŽ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์†๋„ ํ–ฅ์ƒ์„ ์œ„ํ•ด ์บ์‹œ๋ฅผ ์ด์šฉํ•œ๋‹ค.
 ๋‹น์—ฐํžˆ ์†๋„๋ฅผ ๋†’์ด๋ ค๋ฉด ์›๋ณธ์— ์ ‘๊ทผํ•˜๋Š”๊ฒƒ๋ณด๋‹ค ์บ์‹œ์— ์ ‘๊ทผํ•˜๋Š”๊ฒŒ ๋นจ๋ผ์•ผ ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฐ์ดํ„ฐ์˜ ๋ฐ˜๋ณต์  ์•ก์„ธ์Šค๊ฐ€ ๋งŽ์•„์งˆ์ˆ˜๋ก ์บ์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ์œ ๋ฆฌํ•˜๋‹ค.

์•„๋ž˜์™€ ๊ฐ™์€ ํŠน์ง•์„ ๊ฐ€์ง„๋‹ค.

  • ๋‹จ์ˆœํ•œ key-value ๊ตฌ์กฐ
  • In-memory ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ (RAM)
  • ๋น ๋ฅธ ์„ฑ๋Šฅ
    • ํ‰๊ท  ์ž‘์—…์†๋„ < 1ms
    • ์ดˆ๋‹น ์ˆ˜๋ฐฑ๋งŒ ๊ฑด์˜ ์ž‘์—… ๊ฐ€๋Šฅ

์ด์™ธ์—๋„

์ตœ์‹  ๋ฒ„์ „์˜ Redis๋Š” ๋ฐ์ดํ„ฐ ์ €์žฅ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ PUB/SUB ๊ตฌ์กฐ๋ฅผ ํ†ตํ•ด ๋ฉ”์‹œ์ง€๋ฅผ ์ „๋‹ฌํ•˜๋Š” ์šฉ๋„๋กœ๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.

Redis๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ €์žฅ ๊ณต๊ฐ„์— ์ œ์•ฝ์ด ์žˆ์œผ๋ฏ€๋กœ, ์ฃผ๋กœ ๋ณด์กฐ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ๋กœ ์ด์šฉ๋œ๋‹ค.
ํ•˜์ง€๋งŒ ๋” ๋งŽ์€ ๊ณต๊ฐ„์„ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Redis ํด๋Ÿฌ์Šคํ„ฐ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ €์žฅ๊ณต๊ฐ„์„ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.

์‹ฑ๊ธ€์Šค๋ ˆ๋“œ ์ „๋žต

Redis๋Š” ์‚ฌ์šฉ์ž๋“ค์ด ์‹คํ–‰ํ•œ ๋ช…๋ น์–ด๋“ค์„ Event Loop ๋ฐฉ์‹์œผ๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค. ์ฆ‰, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‹คํ–‰ํ•œ ๋ช…๋ น์–ด๋“ค์ด Event Queue์— ์ ์žฌ๋˜๊ณ  ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ๋กœ ํ•˜๋‚˜์”ฉ ์ฒ˜๋ฆฌํ•œ๋‹ค.
๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

๋”ฐ๋ผ์„œ ์•„๋ž˜์˜ ์žฅ์ ๊ณผ ๋‹จ์ ์„ ๊ฐ€์ง€๊ฒŒ ๋œ๋‹ค.

  • ์žฅ์ 
    • 1. ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์ด ์•„๋‹ˆ๋ผ์„œ Context Switching์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ํšจ์œจ์ ์ธ ์‹œ์Šคํ…œ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
    • 2. ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์ด ์•„๋‹ˆ๋ฏ€๋กœ DeadLock์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ๋‹จ์ 
    • 1. ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ์ด๋ฏ€๋กœ ์ „์ฒด ๋ฐ์ดํ„ฐ ์Šค์บ”๊ณผ ๊ฐ™์€ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ํฐ ๋ช…๋ น์–ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋™์•ˆ ๋‹ค๋ฅธ ๋ช…๋ น์–ด๋ฅผ ์ฒ˜๋ฆฌ ๋ถˆ๊ฐ€ํ•˜๋‹ค.
    • 2. ์ด๋•Œ, ๋‹ค๋ฅธ ๋ช…๋ น์–ด๋“ค์€ ์ด๋ฒคํŠธ ํ์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ์‹œ๊ฐ„์ด ๊ธธ์–ด์ง€๋ฏ€๋กœ ์‘๋‹ต ์†๋„๊ฐ€ ์ €ํ•˜๋œ๋‹ค.

 

2. Memory Hierarchy

์˜ˆ์‹œ๋กœ PC์‚ฌ์–‘์ด ์•„๋ž˜์™€ ๊ฐ™๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž.

  • i7 CPU - 12MB Cache Memory
  • 16GB DRAM
  • 512GB SSD

12MB Cache Memory ๋Š” SRAM์œผ๋กœ CPU Cache์— ํ•ด๋‹นํ•œ๋‹ค. ํ•ด๋‹น ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ๋Š” ์—„์ฒญ ๋น ๋ฅด๊ณ , ์—„์ฒญ ๋น„์‹ธ๊ณ , ์šฉ๋Ÿ‰์ด ์ž‘๋‹ค.
16GB DRAM์€ Main Memory๋กœ ์ ๋‹นํžˆ ๋น ๋ฅด๊ณ , ์ ๋‹นํžˆ ๋น„์‹ธ๊ณ , ์ ๋‹นํžˆ ํฌ๊ณ , ํœ˜๋ฐœ์„ฑ์ด๋‹ค.
512GB SSD Storage๋Š” ๋น„๊ต์  ๋Š๋ฆฌ๊ณ , ๋น„๊ต์  ์ €๋ ดํ•˜๊ณ , ์—„์ฒญ ํฌ๊ณ , ๋น„ํœ˜๋ฐœ์„ฑ์ด๋‹ค.

Redis๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์•„์ง€๊ณ  ์ปค์ง€๊ณ  ํŠธ๋ž˜ํ”ฝ์ด ๋Š˜์–ด๋‚จ์— ๋”ฐ๋ผ Man Memory์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ด์„œ ์กฐ๊ธˆ ๋” ๋น ๋ฅด๊ณ  ์‰ฝ๊ฒŒ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๋Š” ๊ฐœ๋…์ด๋‹ค.

 

3. ์บ์‹ฑ ์ „๋žต

์ฝ๊ธฐ ์ „๋žต

(1) Look-Aside ์ „๋žต

๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ Look-Aside ์ „๋žต์€ ๋จผ์ € ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์„ ๋•Œ ์บ์‹œ์—์„œ ๋จผ์ € ๊ฒ€์ƒ‰ํ•˜๊ณ  ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋‹ค๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ง์ ‘ ์ ‘๊ทผํ•˜์—ฌ ์ฐพ์•„์˜จ๋’ค ๋‹ค์‹œ Redis์— ์ €์žฅํ•˜๋Š” ๊ตฌ์กฐ์ด๋‹ค. ๋”ฐ๋ผ์„œ ์บ์‹œ๋Š” ์ฐพ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์„ ๋•Œ๋งŒ ๋ฐ์ดํ„ฐ๊ฐ€ ์ž…๋ ฅ๋˜๊ธฐ ๋•Œ๋ฌธ์— Lazy Loading์ด๋ผ๊ณ ๋„ ํ•œ๋‹ค.

ํ•ด๋‹น ๊ตฌ์กฐ๋Š” Redis๊ฐ€ ๋‹ค์šด๋˜๋”๋ผ๋„ ๋ฐ”๋กœ ์žฅ์• ๋กœ ์ด์–ด์ง€์ง€ ์•Š๊ณ , DB์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.
ํ•˜์ง€๋งŒ Redis์— ๋ถ™์–ด์žˆ๋˜ ์ปค๋„ฅ์…˜์ด ๋งŽ์•˜๋‹ค๋ฉด ๊ฐ‘์ž๊ธฐ DB๋กœ ์กฐํšŒํ•˜๋Š” ์ปค๋„ฅ์…˜์ด ๋งŽ์•„์ง€๊ธฐ ๋•Œ๋ฌธ์— DB์— ๋ถ€ํ•˜๊ฐ€ ๋งŽ์ด ๊ฑธ๋ฆด ์ˆ˜ ์žˆ๋‹ค.

์บ์‹œ๋ฅผ ์ฒ˜์Œ ํˆฌ์ž…ํ•˜๊ฑฐ๋‚˜, ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฅผ DB์—๋งŒ ์ €์žฅํ–ˆ๋‹ค๋ฉด Cache Miss๊ฐ€ ๋งŽ์ด ๋ฐœ์ƒํ•ด์„œ ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.
์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด DB์—์„œ ๋ฏธ๋ฆฌ ์บ์‹œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ€์–ด ๋„ฃ์–ด์ฃผ๋Š” Cache Warming ๊ณผ์ •์„ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

์“ฐ๊ธฐ ์ „๋žต

(1) Write-Around

Write-Around ๋ฐฉ์‹์€ DB์—๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. Cache Miss๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ์— ์บ์‹œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋Œ์–ด์˜จ๋‹ค.
DB๋‚ด์˜ ๋ฐ์ดํ„ฐ์™€ ์บ์‹œ๋‚ด์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.

(2) Write-Through

Write-Through ๋ฐฉ์‹์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๋•Œ ์บ์‹œ์—๋„ ํ•จ๊ป˜ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.
์บ์‹œ๋Š” ํ•ญ์ƒ ์ตœ์‹  ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์ž‡๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์ง€๋งŒ, ์ €์žฅํ•  ๋•Œ๋งˆ๋‹ค ๋‘๋‹จ๊ณ„ ์Šคํ…์„ ๊ฑฐ์ณ์•ผ ํ•˜๋ฏ€๋กœ ์ƒ๋Œ€์ ์œผ๋กœ ๋Š๋ฆฌ๋‹ค.
์บ์‹œ์— ๋„ฃ์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์žฌ์‚ฌ์šฉ๋˜์ง€ ์•Š์„์ˆ˜๋„ ์žˆ์œผ๋ฏ€๋กœ ์ฃผ์˜ํ•ด์•ผ ํ•˜๋ฉฐ Expire Time์„ ์ž˜ ์„ค์ •ํ•ด์ค˜์•ผ ํ•œ๋‹ค. 

 

4. Redis ๋ฐ์ดํ„ฐ ํƒ€์ž…

๋ ˆ๋””์Šค๋Š” ์ž์ฒด์ ์œผ๋กœ ๋‹ค์–‘ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

  • setCommand๋ฅผ ์ด์šฉํ•ด์„œ ์ €์žฅ๋˜๋Š” ๋ฐ์ดํ„ฐ๋Š” ๋ชจ๋‘ String ํ˜•ํƒœ๋กœ ์ €์žฅ๋œ๋‹ค.
  • ๋น„ํŠธ ๋‹จ์œ„ ์—ฐ์‚ฐ์ด ๊ฐ€๋Šฅํ•œ Bitmap
  • ๋ฐ์ดํ„ฐ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ์ €์žฅํ•˜๋Š” List๋Š” ํ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์ ์ ˆํ•˜๋‹ค.
  • ํ•˜๋‚˜์˜ ํ‚ค์— ๋˜๋‹ค์‹œ ์—ฌ๋Ÿฌ ํ•„๋“œ์™€ ๊ฐ’์˜ ์Œ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” Hash๊ฐ€ ์žˆ๋‹ค.
  • ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” ๊ฐ’์˜ ์ง‘ํ•ฉ์˜ Set
  • ์ค‘๋ณต๋˜์ง€ ์•Š๊ณ  ํŠน์ •๊ฐ’์œผ๋กœ ์ •๋ ฌ๋˜๋Š” Sorted Set
  • ๊ต‰์žฅํžˆ ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ์‚ฌ์šฉํ•˜๋ฉฐ ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” ๊ฐ’์˜ ๊ฐœ์ˆ˜๋ฅผ ์นด์šดํŠธํ•  ๋•Œ HyperLogLog๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  • ๋กœ๊ทธ๋ฅผ ์ €์žฅํ•  ๋•Œ Stream์„ ์‚ฌ์šฉํ•œ๋‹ค.

 

5. Redis ๋ฐ์ดํ„ฐ๋ฅผ ์˜๊ตฌ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•

Redis๋Š” In-memory ๋ฐ์ดํ„ฐ ์Šคํ† ์–ด์ด๋‹ค. ๋”ฐ๋ผ์„œ ์•„๋ž˜์˜ ๋ฌธ์ œ๋ฅผ ๊ฐ€์ง„๋‹ค.

  • ์„œ๋ฒ„ ์žฌ์‹œ์ž‘ ์‹œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ ์œ ์‹ค
  • ๋ณต์ œ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ด๋„ ์‚ฌ๋žŒ์˜ ์‹ค์ˆ˜ ๋ฐœ์ƒ ์‹œ ๋ฐ์ดํ„ฐ ๋ณต์› ๋ถˆ๊ฐ€
  • Redis ์บ์‹œ ์ด์™ธ์˜ ์šฉ๋„๋กœ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์ ์ ˆํ•œ ๋ฐ์ดํ„ฐ ๋ฐฑ์—…์ด ํ•„์š”

AOF (Append Only File)

Redis Protocol ํ˜•ํƒœ๋กœ ์ €์žฅ๋˜๋ฉฐ, ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ์ปค๋งจ๋“œ๊ฐ€ ๋“ค์–ด์˜ค๋ฉด ์ปค๋งจ๋“œ๋ฅผ ๊ทธ๋Œ€๋กœ ๋ชจ๋‘ ์ €์žฅํ•œ๋‹ค.
AOF๋Š” append onlyํ•˜๊ฒŒ ๋™์ž‘ํ•˜๋ฏ€๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์ถ”๊ฐ€๋งŒ ๋˜๋ฏ€๋กœ ๋ณดํ†ต RDB๋ณด๋‹ค ์ปค์ง€๊ฒŒ ๋œ๋‹ค.
๋”ฐ๋ผ์„œ, AOF ํŒŒ์ผ์€ ์ฃผ๊ธฐ์ ์œผ๋กœ ์••์ถ•ํ•ด์„œ ์žฌ์ž‘์„ฑ๋˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์ณ์•ผ ํ•œ๋‹ค.

 

์ž๋™/ ์ˆ˜๋™ ํŒŒ์ผ ์ €์žฅ ๋ฐฉ๋ฒ•

  • ์ž๋™: redis.conf ํŒŒ์ผ์—์„œ auto-aof-rewrite-percentage ์˜ต์…˜ (ํฌ๊ธฐ ๊ธฐ์ค€)
  • ์ˆ˜๋™: BGREWRITEAOF ์ปค๋งจ๋“œ๋ฅผ ์ด์šฉํ•ด CLI ์ฐฝ์—์„œ ์ˆ˜๋™์œผ๋กœ AOF ํŒŒ์ผ ์žฌ์ž‘์„ฑ

RDB

Binary ํ˜•ํƒœ๋กœ ์ €์žฅ๋˜๋ฉฐ, Snapshot ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ €์žฅ ๋‹น์‹œ์˜ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ ๊ทธ๋Œ€๋กœ๋ฅผ ์‚ฌ์ง„์ฐ๋“ฏ์ด ๊ทธ๋Œ€๋กœ ์ €์žฅํ•œ๋‹ค.

 

์ž๋™/ ์ˆ˜๋™ ํŒŒ์ผ ์ €์žฅ ๋ฐฉ๋ฒ•

  • ์ž๋™: redis.conf ํŒŒ์ผ์—์„œ SAVE ์˜ต์…˜ (์‹œ๊ฐ„ ๊ธฐ์ค€)
  • ์ˆ˜๋™: BGSAVE ์ปค๋งจ๋“œ๋ฅผ ์ด์šฉํ•ด cli ์ฐฝ์—์„œ ์ˆ˜๋™์œผ๋กœ RDB ํŒŒ์ผ ์ €์žฅ
    • SAVE ์ปค๋งจ๋“œ๋Š” ์ ˆ๋Œ€ ์‚ฌ์šฉ X

 

RDB vs AOF ์„ ํƒ ๊ธฐ์ค€

  • ๋ฐฑ์—…์€ ํ•„์š”ํ•˜์ง€๋งŒ ์–ด๋Š ์ •๋„์˜ ๋ฐ์ดํ„ฐ ์†์‹ค์ด ๋ฐœ์ƒํ•ด๋„ ๊ดœ์ฐฎ์€ ๊ฒฝ์šฐ
    • RDB ๋‹จ๋… ์‚ฌ์šฉ
    • redis.conf ํŒŒ์ผ์—์„œ SAVE ์˜ต์…˜์„ ์ ์ ˆํžˆ ์‚ฌ์šฉ
  • ์žฅ์•  ์ƒํ™ฉ ์ง์ „๊นŒ์ง€์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณด์žฅ๋˜์–ด์•ผ ํ•  ๊ฒฝ์šฐ
    • AOF ์‚ฌ์šฉ (appendonly yes)
    • APPENDFSYNC ์˜ต์…˜์ด everysec์ธ ๊ฒฝ์šฐ ์ตœ๋Œ€ 1์ดˆ ์‚ฌ์ด์˜ ๋ฐ์ดํ„ฐ ์œ ์‹ค ๊ฐ€๋Šฅ(๊ธฐ๋ณธ ์„ค์ •)
  • ์ œ์ผ ๊ฐ•๋ ฅํ•œ ๋‚ด๊ตฌ์„ฑ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ
    • RDB & AOF ๋™์‹œ ์‚ฌ์šฉ

 

6. Redis ์•„ํ‚คํ…์ฒ˜์˜ ์ข…๋ฅ˜

  • 1. Replication ์•„ํ‚คํ…์ฒ˜
    • Master์™€ Replica๋กœ ๊ตฌ์„ฑ
    • ๋‹จ์ˆœํ•œ ๋ณต์ œ ์—ฐ๊ฒฐ ์‹œ ์‚ฌ์šฉ (replicaof)
    • ๋น„๋™๊ธฐ์‹ ๋ณต์ œ๋กœ ๋ณต์ œ๊ฐ€ ์„ฑ๊ณตํ–ˆ๋Š”์ง€ ํ™•์ธํ•˜์ง€ ์•Š์Œ
    • HA(๊ณ ๊ฐ€์šฉ์„ฑ) ๊ธฐ๋Šฅ์ด ์—†์œผ๋ฏ€๋กœ ์žฅ์•  ์ƒํ™ฉ ์‹œ ์ˆ˜๋™์œผ๋กœ ๋ณต๊ตฌ
  • 2. Sentinel ์•„ํ‚คํ…์ฒ˜
    • Sentinel, Master, Replica๋กœ ๊ตฌ์„ฑ
    • Sentinel ๋…ธ๋“œ๊ฐ€ Redis ๋งˆ์Šคํ„ฐ์™€ ๋ ˆํ”Œ๋ฆฌ์นด ๋…ธ๋“œ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋ง
    • Master๊ฐ€ ๋น„์ •์ƒ ์ƒํƒœ์ผ ๋•Œ ์ž๋™์œผ๋กœ failover
    • ์—ฐ๊ฒฐ ์ •๋ณด ํ•„์š” ์—†์Œ
    • sentinel ๋…ธ๋“œ๋Š” ํ•ญ์ƒ 3๋Œ€ ์ด์ƒ์˜ ํ™€์ˆ˜๋กœ ์กด์žฌํ•ด์•ผ ํ•จ
      • ๊ณผ๋ฐ˜์ˆ˜ ์ด์ƒ์˜ sentinel์ด ๋™์˜ํ•ด์•ผ failover ์ง„ํ–‰
  • 3. Cluster ์•„ํ‚คํ…์ฒ˜
    • ์ตœ์†Œ 3๋Œ€์˜ Master๊ฐ€ ํ•„์š”ํ•˜๋ฉฐ Sharding ๊ธฐ๋Šฅ์„ ์ œ๊ณต
    • ์Šค์ผ€์ผ ์•„์›ƒ๊ณผ HA ๊ตฌ์„ฑ (High Availability)
    • ํ‚ค๋ฅผ ์—ฌ๋Ÿฌ ๋…ธ๋“œ์— ์ž๋™์œผ๋กœ ๋ถ„ํ• ํ•ด์„œ ์ €์žฅ
    • ๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ ์„œ๋กœ๋ฅผ ๊ฐ์‹œํ•˜์—ฌ, ๋งˆ์Šคํ„ฐ ๋น„์ •์ƒ ์ƒํƒœ์ผ ๋•Œ ์ž๋™ failover

 

7. ์•„ํ‚คํ…์ฒ˜ ์„ ํƒ ๊ธฐ์ค€

์œ„์˜ ํ”Œ๋กœ์šฐ ์ฐจํŠธ๋ฅผ ์ž˜ ๋”ฐ๋ผ๊ฐ€๋ณด๋ฉด์„œ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์„ ํƒํ•ด์•ผ ํ•œ๋‹ค.