์บ์‹ฑ ์ „๋žต

์„ฑ๋Šฅ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•ด Redis ๊ฐ™์€ ์บ์‹œ ๋ ˆ์ด์–ด๋ฅผ ๋ถ™์ด๋‹ค๋ณด๋ฉด, ๋˜ ์ด๋Ÿฐ๋ฐ์„œ ๋‚˜์˜ค๋Š” ๊ด€๋ฆฌํฌ์ธํŠธ๋‚˜ ๋”œ๋ ˆ๋งˆ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ์‹œ์ž‘ํ•œ๋‹ค.
๊ฒฐ๊ตญ ๋ฐ์ดํ„ฐ์†Œ์Šค๊ฐ€ 2๊ฐœ ์ด์ƒ์ด ๋˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์—ฌ๊ธฐ์—์„œ๋Š” ์ƒํ™ฉ์— ๋”ฐ๋ผ์„œ ๋ช‡๊ฐ€์ง€ ์ ‘๊ทผ๋ฒ•์ด ์กด์žฌํ•œ๋‹ค.



Cache Aside

๊ฐ€์žฅ ์ผ๋ฐ˜์ ์œผ๋กœ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ์บ์‹ฑ ์ „๋žต์ด๋‹ค.

https://codeahoy.com/2017/08/11/caching-strategies-and-how-to-choose-the-right-one/

  1. ์•ฑ์€ ์ผ๋‹จ ์บ์‹œ์— ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š”์ง€๋ฅผ ๊ฒ€์‚ฌํ•œ๋‹ค.
  2. ์บ์‹œ๊ฐ€ ์žˆ๋‹ค๋ฉด ๊ทธ๊ฑธ ๋ฐ”๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  3. ์บ์‹œ๊ฐ€ ์—†๋‹ค๋ฉด DB๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“ค์–ด์„œ ์บ์‹œ์— ์ €์žฅํ•˜๊ณ , ๋ฐ˜ํ™˜ํ•œ๋‹ค.

์—ฌ๊ธฐ์„œ ์บ์‹œ ์ €์žฅ์€ TTL ๊ธฐ๋ฐ˜์œผ๋กœ ์ˆ˜๋ช…์„ ๋‘๊ณ ์„œ ์‚ฌ์šฉํ•˜๊ธฐ๋„ ํ•œ๋‹ค.

์ฝ๊ธฐ๊ฐ€ ๋งŽ์œผ๋ฉด์„œ๋„, ์ ‘๊ทผํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ๋ถ„ํฌ๊ฐ€ ๋ชฐ๋ ค์žˆ๋Š” ํŒจํ„ด์— ์ ํ•ฉํ•˜๋‹ค.

๊ทธ๋ฆฌ๊ณ  read ์‹œ์˜ ์„ฑ๋Šฅ์ด ๊ท ์ผํ•˜์ง€ ์•Š๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์ง€๋งŒ, lazyํ•œ ํŠน์„ฑ ํƒ“์— ์บ์‹œ ์šฉ๋Ÿ‰์„ ์ปดํŒฉํŠธํ•˜๊ฒŒ ์œ ์ง€ํ•˜๊ธฐ๋Š” ๊ฐ€์žฅ ์ข‹๋‹ค.
read๋˜์ง€ ์•Š์œผ๋ฉด ์บ์‹œ์—๋„ ์ €์žฅํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.




Read Through

Read Through๋Š” Cache Aside์™€ ๋น„์Šทํ•˜๋ฉด์„œ๋„ ํฌ๊ฒŒ ๋‹ค๋ฅธ ์ ‘๊ทผ๋ฒ•์ด๋‹ค.

https://codeahoy.com/2017/08/11/caching-strategies-and-how-to-choose-the-right-one/
DB๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์บ์‹œ๋ฅผ ๋งŒ๋“ค๊ณ , ์•ฑ์ด ๊ทธ ์บ์‹œ๋ฅผ ์ฝ๋Š”๋‹ค๋Š” ์ ์—์„œ๋Š” Cache Aside์™€ ๋น„์Šทํ•˜์ง€๋งŒ, ์•ฑ์ด DB์™€ ์ง์ ‘ ์—ฐ๊ฒฐ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ด ๋‹ค๋ฅด๋‹ค.

๋ณ„๋„์˜ ๋งˆ๋ฒ•๊ฐ™์€ ์ฒ˜๋ฆฌ๋ฅผ ํ†ตํ•ด์„œ ์บ์‹œ๊ฐ€ ์ตœ์‹ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•œ๋‹ค๋Š” ๊ฐ€์ • ํ•˜์—์„œ, ๊ทธ๋ƒฅ ์บ์‹œ์—์„œ๋งŒ ๊ฐ’์„ ์ฝ์–ด์˜ค๋Š” ๊ฒƒ์ด๋‹ค.
๊ทธ๋ž˜์„œ ์บ์‹œ์˜ ์ตœ์‹ ์„ฑ์„ ๋ณด์žฅํ•˜๋Š” Write Through๋‚˜ Write Back ํŒจํ„ด๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ๋•Œ ์˜๋ฏธ๊ฐ€ ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ ์บ์‹œ๋ฅผ ๋ชจ๋‘ ๋ฏธ๋ฆฌ ์ €์žฅํ•ด์•ผํ•œ๋‹ค๋Š” ์ „์ œ์กฐ๊ฑด์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๊ท ์ผํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ๋ฉด Cache Aside์— ๋น„ํ•ด ์บ์‹œ ์ €์žฅ๊ณต๊ฐ„ ๋‚ญ๋น„๊ฐ€ ์‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ๋‹จ์ ์ด๋‹ค.




Write Through


https://codeahoy.com/2017/08/11/caching-strategies-and-how-to-choose-the-right-one/
Write Through๋Š” ์กฐ๊ธˆ ๋‹ค๋ฅด๊ฒŒ ์บ์‹œ์˜ ๊ด€๋ฆฌ๋ฅผ ๋ฐ”๋ผ๋ณด๋Š” ์ ‘๊ทผ๋ฐฉ๋ฒ•์ด๋‹ค.
DB๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ์บ์‹œ๋ฅผ ๋งž์ถ”๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ, ์บ์‹œ๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  DB๋ฅผ ๋งž์ถ˜๋‹ค.

์ด๋Ÿฌ๋ฉด ์บ์‹œ๊ฐ€ ํ•ญ์ƒ ์ตœ์‹  ์ƒํƒœ๋ผ๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์ฝ๊ธฐ ์‹œ์— ์บ์‹œ๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๋ถ€๋‹ด์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค. Read Through๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

๊ฐ€๋ น, Redis์™€ RDB๋ฅผ ์Šคํ† ๋ฆฌ์ง€๋กœ ์‚ฌ์šฉํ•˜๋Š” ์ƒํ™ฉ์—์„œ ์บ์‹œ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•œ๋‹ค๋ฉด, Redis์˜ ์บ์‹œ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ณ  RDB๋ฅผ ๋˜‘๊ฐ™์ด ์—…๋ฐ์ดํŠธํ•ด์„œ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
๋Œ€์‹  ์บ์‹œ๋Š” ์ตœ์‹ ์ด์ง€๋งŒ ๋ชจ์ข…์˜ ์ด์œ ๋กœ DB์—๋Š” ๋™๊ธฐํ™”๋˜์ง€ ์•Š๋Š” ๊ณจ์น˜์•„ํ”ˆ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜๋Š” ์žˆ๋‹ค.

์ฝ๊ธฐ๋Š” ๋น ๋ฅด๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์ง€๋งŒ, ๋น„๊ต์  ๋А๋ฆฐ DB ๋ ˆ์ด์–ด์—๋„ ์ˆ˜์ •์„ ๋™๊ธฐ์ ์œผ๋กœ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์“ฐ๊ธฐ ์ž‘์—… ์ž์ฒด์— ๋Œ€ํ•ด์„œ๋Š” ๋ ˆ์ดํ„ด์‹œ๋ฅผ ์ค„์ด๋Š” ๋ฐ ํ•œ๊ณ„๊ฐ€ ์žˆ๋‹ค.




Write Behind


https://codeahoy.com/2017/08/11/caching-strategies-and-how-to-choose-the-right-one/
Write Back์ด๋ผ๊ณ ๋„ ๋ถ€๋ฅธ๋‹ค.

Write Through๊ฐ€ ์บ์‹œ๋ฅผ ๋จผ์ € ์ˆ˜์ •ํ•˜๋˜ ์ •์งํ•˜๊ฒŒ ๋ฐ์ดํ„ฐ์†Œ์Šค๋ฅผ ๋™์‹œ์— ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋ผ๋ฉด, Write Behind๋Š” ๋น„๋™๊ธฐ์ ์œผ๋กœ ๋А์Šจํ•˜๊ฒŒ ๋™๊ธฐํ™”๋ฅผ ๋งž์ถ˜๋‹ค.

์šฐ์„  ์บ์‹œ๋ฅผ ๋จผ์ € ์ˆ˜์ •ํ•˜๊ณ , ๋‚˜์ค‘์— ์•Œ์•„์„œ ์บ์‹œ ์ˆ˜์ •์‚ฌํ•ญ์ด DB์— ์ €์žฅ๋˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์‚ฌ์‹ค CDC์˜ ๊ฐœ๋…๊ณผ ํฌ๊ฒŒ ๋‹ค๋ฅด์ง€ ์•Š๋‹ค.

๋Œ€ํ‘œ์ ์œผ๋กœ Redis๋Š” ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์˜ต์…˜์„ ์“ธ ๊ฒฝ์šฐ์— ํ•œํ•ด ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ณ , RedisGears ๊ฐ™์€ ํ™•์žฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

์ด๊ฑด ์“ฐ๊ธฐ๊ฐ€ ๋งค์šฐ ๋งŽ์€ ํŒจํ„ด์— ์ ํ•ฉํ•˜๋‹ค.
ํ•˜์ง€๋งŒ ์“ฐ๊ธฐ๊ฐ€ ๊ทธ๋ฆฌ ๋งŽ์ง€ ์•Š๋‹ค๋ฉด Read Through + Write Through๋กœ๋„ ์ถฉ๋ถ„ํ•˜๋‹ค. ์˜คํžˆ๋ ค ๊ด€๋ฆฌํฌ์ธํŠธ๋งŒ ์ฆ๊ฐ€ํ•  ๊ฒƒ์ด๋‹ค.




ํ•˜๋“œ์›จ์–ด ์ˆ˜์ค€ ์บ์‹ฑ ์ „๋žต

์œ„์—์„œ๋Š” Redis ๊ฐ™์€ ์†Œํ”„ํŠธ์›จ์–ด ์‹œ์Šคํ…œ ์ˆ˜์ค€ ์บ์‹ฑ์„ ์œ„์ฃผ๋กœ ์ด์•ผ๊ธฐํ–ˆ์ง€๋งŒ, ์‚ฌ์‹ค ์ด๊ฑด ํ•˜๋“œ์›จ์–ด ์บ์‹œ ์ˆ˜์ค€์—์„œ๋„ ์‚ฌ์šฉํ•˜๋Š” ๊ฐœ๋…์ด๋‹ค.

Redis๋ฅผ CPU์˜ ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ๋กœ, DB๋ฅผ ์ผ๋ฐ˜ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋Œ€์น˜์‹œ์ผœ๋„ ๋™์ผํ•œ ์ด์•ผ๊ธฐ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

https://youtu.be/GhEYqA5dxD4?si=-t1v2RzE8TwxUp4T

ํ˜„๋Œ€์˜ CPU๋“ค์€ ๋Œ€๋ถ€๋ถ„ Write Back ๊ธฐ๋ฐ˜์˜ ์บ์‹ฑ ์ „๋žต์„ ์‚ฌ์šฉํ•œ๋‹ค.
์บ์‹œ ์ˆ˜์ •ํ• ๋•Œ๋งˆ๋‹ค ๋žจ ์ˆ˜์ •ํ•œ๋‹ค๊ณ  ๊ธฐ๋‹ค๋ฆฌ๋ฉด ์†์ด ํ„ฐ์ง€๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค...


์ฐธ์กฐ
https://cyber0946.tistory.com/m/81
https://redis.io/docs/latest/operate/oss_and_stack/stack-with-enterprise/gears-v1/python/recipes/write-behind/
https://codeahoy.com/2017/08/11/caching-strategies-and-how-to-choose-the-right-one/
https://codeahoy.com/learn/tutorials/distributed-caching-at-scale/