์บ์ฑ ์ ๋ต
์ฑ๋ฅ ์ต์ ํ๋ฅผ ์ํด Redis ๊ฐ์ ์บ์ ๋ ์ด์ด๋ฅผ ๋ถ์ด๋ค๋ณด๋ฉด, ๋ ์ด๋ฐ๋ฐ์ ๋์ค๋ ๊ด๋ฆฌํฌ์ธํธ๋ ๋๋ ๋ง๊ฐ ๋ฐ์ํ๊ธฐ ์์ํ๋ค.
๊ฒฐ๊ตญ ๋ฐ์ดํฐ์์ค๊ฐ 2๊ฐ ์ด์์ด ๋๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ด๋ค.
์ฌ๊ธฐ์์๋ ์ํฉ์ ๋ฐ๋ผ์ ๋ช๊ฐ์ง ์ ๊ทผ๋ฒ์ด ์กด์ฌํ๋ค.
Cache Aside
๊ฐ์ฅ ์ผ๋ฐ์ ์ผ๋ก ๋ง์ด ์ฌ์ฉ๋๋ ์บ์ฑ ์ ๋ต์ด๋ค.
https://codeahoy.com/2017/08/11/caching-strategies-and-how-to-choose-the-right-one/
- ์ฑ์ ์ผ๋จ ์บ์์ ์ํ๋ ๋ฐ์ดํฐ๊ฐ ์๋์ง๋ฅผ ๊ฒ์ฌํ๋ค.
- ์บ์๊ฐ ์๋ค๋ฉด ๊ทธ๊ฑธ ๋ฐ๋ก ๋ฐํํ๋ค.
- ์บ์๊ฐ ์๋ค๋ฉด 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/