๐งฐ Redis (02) - ์บ์(Cache), ์บ์ฑ(Caching) ์ ๋ต
ํ์ต ํ๊ฒฝ : Mac, iTerm
์บ์(Cache), ์บ์ฑ(Caching)์ด๋?
โ๏ธ ย ์บ์(Cache)
์๋ณธ ์ ์ฅ์๋ณด๋ค ๋น ๋ฅด๊ฒ ๊ฐ์ ธ์ฌ ์ ์๋ ์์ ๋ฐ์ดํฐ ์ ์ฅ์๋ฅผ ์๋ฏธํ๋ค.
Cache Aside (= Look Aside, Lazy Loading) ์ ๋ต
์บ์(์์ ๋ฐ์ดํฐ ์ ์ฅ์)์ ์ ๊ทผํด ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ๊ฐ์ ธ์ค๋ ๋ฐฉ์์ ์๋ฏธํ๋ค.
์๋ฅผ ๋ค์ด ์ค๋ฌด์์๋ API ์๋ต ์๋๊ฐ ๋๋ฌด ๋๋ฆฌ๋ค๋ฉด ์กฐํ ์๋๋ฅผ ํฅ์๊ธฐ ์ํด ์๋ต ๋ฐ์ดํฐ๋ฅผ ์บ์ฑํด ๋๊ณ ์ฐ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
๋ฐ์ดํฐ๋ฅผ ์บ์ฑํ ๋ ์ฌ์ฉํ๋ ์ ๋ต (Cache Aside, Write Around)
Redis๋ฅผ ์บ์๋ก ์ธ ๋ ์ธ ์ ์๋ ์ ๋ต์ ์์ฃผ ๋ค์ํ๋ค. ๊ทธ์ค์์ ์ค๋ฌด์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ 2๊ฐ์ง๋ง ์์๋ณด๊ณ ๋๋จธ์ง ์ ๋ต๋ค์ ์ต์ํด์ง ๋ค ์ถ๊ฐ๋ก ํ์ตํ๋ฉด ๋๋ค. ๋ค์ํ ์ ๋ต์ ๊ฐ์ด ์ฌ์ฉํ ์๋ ์๋ค.
โ๏ธ Cache Aside (= Look Aside, Lazy Loading) ์ ๋ต
Cache Aside ์ ๋ต์ ์บ์์์ ๋ฐ์ดํฐ๋ฅผ ํ์ธํ๊ณ , ์๋ค๋ฉด DB๋ฅผ ํตํด ์กฐํํด์ค๋ ๋ฐฉ์์ด๋ค.
๋ฐ์ดํฐ๋ฅผ ์กฐํํ ๋ ์ฃผ๋ก ์ฌ์ฉํ๋ ์ ๋ต์ด ์ด Cache Aside ์ ๋ต์ด๋ค.
๊ฒ์ํ์์ ์กฐํ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ณ ์ด๋ฅผ ๋ฐฐํฌํ๋ค๊ณ ๊ฐ์ ํ๊ณ Cache Aside ์๋ ๋ฐฉ์์ ์ดํดํด๋ณด์.
- ์ฒ์ ๊ฒ์ํ ์๋น์ค๋ฅผ ๋ฐฐํฌํ๋ฉด ๊ฒ์๊ธ์ด ์กด์ฌํ์ง ์๋ ์ํ์ด๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ ๋์ค์ ์๋ฌด๋ฐ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋์ด ์์ง ์๋ค.
- ์ผ๋ถ ์ฌ์ฉ์๊ฐ ๋ค์ด์ ๊ฒ์๊ธ ์์ฑ์ ํจ์ผ๋ก์จ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ค. ์ด ๋ฐ์ดํฐ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๋ค. (๋ ๋์ค์๋ ์ ์ฅ๋์ง ์๋๋ค.)
- ์ฌ์ฉ์๊ฐ ๊ฒ์๋ฌผ์ ์กฐํํ๋ ค๊ณ ์์ฒญํ๋ค. ์ด ๋, ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก๋ถํฐ ๋ฐ๋ก ๋ฐ์ดํฐ ์กฐํ๋ฅผ ํ๊ธฐ ์ ์ ๋ ๋์ค์ ์๋ ์ง ๋จผ์ ํ์ธํ๋ค.
- ๋ ๋์ค์ ๋ฐ์ดํฐ๊ฐ ์๋ ๊ฑธ ํ์ธํ ๋ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์กฐํํด์ ์๋ตํ๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก๋ถํฐ ์กฐํํ ๋ฐ์ดํฐ๋ฅผ ์๋ตํ ๋ค์ ๋ ๋์ค์๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํด๋๋ค.
- ๋ค์ ํ ๋ฒ ์ฌ์ฉ์๊ฐ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๋ ค๊ณ ์์ฒญํ๋ค.
- ๋ ๋์ค์ ์กฐํํ๊ณ ์ ํ๋ ๋ฐ์ดํฐ๊ฐ ์๋์ง ํ์ธํ๋๋ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํด์ ๋ ๋์ค๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ก ๊ฐ์ ธ์จ๋ค.
๊ทธ๋ฌ๋๊น ์ ๋ฆฌํ์๋ฉด,
1. ์บ์์ ๋ฐ์ดํฐ๊ฐ ์์ ๊ฒฝ์ฐ (= Cache Hit) ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ์ ๋ ์บ์(Redis)์ ๋ฐ์ดํฐ๊ฐ ์๋ ๊ฒฝ์ฐ๋ฅผ Cache Hit๋ผ๊ณ ํ๋ค.
2. ์บ์์ ๋ฐ์ดํฐ๊ฐ ์๋ ๊ฒฝ์ฐ (= Cache Miss) ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ์ ๋ ์บ์(Redis)์ ๋ฐ์ดํฐ๊ฐ ์๋ ๊ฒฝ์ฐ๋ฅผ Cache Miss๋ผ๊ณ ํ๋ค.
โ๏ธ Write Around ์ ๋ต
Write Around ์ ๋ต์ ์ฐ๊ธฐ ์์ (์ ์ฅ, ์์ , ์ญ์ )์ ์บ์์๋ ๋ฐ์ํ์ง ์๊ณ , DB์๋ง ๋ฐ์ํ๋ ๋ฐฉ์์ด๋ค.
Cache Aside ์ ๋ต์ด ๋ฐ์ดํฐ ์กฐํ์ ๊ด๋ จ๋ ์ ๋ต์ด๋ผ๋ฉด Write Around ์ ๋ต์ ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ์ธ ์ง(์ ์ฅ, ์์ , ์ญ์ )์ ๊ด๋ จ๋ ์ ๋ต์ด๋ค.
Write Around ์ ๋ต์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋ ๋ ๋์ค์ ์ ์ฅํ์ง ์๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค์๋ง ์ ์ฅํ๋ ๊ฒ์ ๋งํ๋ค. ๊ทธ๋ฌ๋ค ๋ฐ์ดํฐ๋ฅผ ์กฐํํ ๋ ๋ ๋์ค์ ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์กฐํํด์์ ๋ ๋์ค์ ์ ์ฅ์์ผ์ฃผ๋ ๋ฐฉ์์ด๋ค.
Cache Aside, Write Around ์ ๋ต์ ํ๊ณ์ ํด๊ฒฐ ๋ฐฉ๋ฒ
โ๏ธ Cache Aside, Write Around ์ ๋ต์ ํ๊ณ์
1. ์บ์๋ ๋ฐ์ดํฐ์ DB๋ฐ์ดํฐ๊ฐ ์ผ์นํ์ง ์์ ์ ์๋ค.
Cache Aside์ Write Around ์ ๋ต์ ๊ฐ์ด ์ผ์ ๋์ ํ๊ณ์ ์ค ํ๋๋ ์บ์๋ ๋ฐ์ดํฐ์ DB์ ๋ฐ์ดํฐ๊ฐ ์ผ์นํ์ง ์์ ์ ์๋ค๋ ์ ์ด๋ค. ์ฆ, ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ ๋ณด์ฅํ ์ ์๋ค๋ ๋ป
๋ ๋ฐฉ์์ ๊ฐ์ด ์ฐ๋ ๊ฑด ํ์
์์๋ ๋ง์ด ์ฐ๋ ๋ฐฉ์์ด์ง๋ง, ๋ฐ์ดํฐ๋ฅผ ์์ ํ ๋ DB๋ง ์
๋ฐ์ดํธ ์ํค๊ธฐ ๋๋ฌธ์ ๊ธฐ์กด์ ์ ์ฅ๋ Redis์ ๋ฐ์ดํฐ์ DB์ ๋ฐ์ดํฐ๋ ๋ค๋ฅผ ์๋ฐ์ ์๋ค.
ex) ํ๋กํ ์์ ์์ ๋ด ์ด๋ฆ์ โ๊น๋ณด๊ฒฝโ์์ โ๊น๋ณด๊ฐฑโ์ผ๋ก ๋ฐ๊ฟจ๋๋ฐ, ๋ด ํ๋กํ ์กฐํ๋ฅผ ํด๋ดค๋๋ ๋ด ์ด๋ฆ์ด ์ฌ์ ํ โ๊น๋ณด๊ฒฝโ์ด๋ผ๊ณ ํ์๋๋ ๋ฌธ์ ๊ฐ ๋ฐ์
2. ์บ์์ ์ ์ฅํ ์ ์๋ ๊ณต๊ฐ์ด ๋น๊ต์ ํ์
DB๋ ๋์คํฌ(Disk)์ ์ ์ฅํด์ ๋ง์ ์์ ์ ์ฅํ๊ธฐ ์ฉ์ดํ์ง๋ง, ์บ์๋ ๋ฉ๋ชจ๋ฆฌ(RAM)์ ์ ์ฅํ๊ธฐ ๋๋ฌธ์ DB์ ๋นํด ๋ง์ ์์ ์ ์ฅ ํ ์ ์๋ค.
๐ค ์ด ํ๊ณ๋ฅผ ์ด๋ป๊ฒ ๊ทน๋ณตํ ๊น?
- 1. ์บ์๋ ๋ฐ์ดํฐ์ DB๋ฐ์ดํฐ๊ฐ ์ผ์นํ์ง ์์ ์ ์๋ค.
- ์บ์์ DB์ ๋ฐ์ดํฐ๋ฅผ ์ผ์น์ํค๊ธฐ ์ํด, ๋ฐ์ดํฐ๋ฅผ ์์ ํ ๋๋ง๋ค Redis์ DB์ ๋์์ ์
๋ฐ์ดํธ์ํค๋ฉด?
โ ๋ฐ์ดํฐ๋ ์ผ์นํ ๊ฒ. ๊ทธ๋ฌ๋ ์ฑ๋ฅ์ด ๋๋ ค์ง ๊ฒ
๊ทธ๋ ๋ค๊ณ ์ฑ๋ฅ ํฅ์์ ์ํด DB์ ๋ฐ์ดํฐ๋ง ์ ๋ฐ์ดํธํ๋ฉด ์บ์์ DB์ ๋ฐ์ดํฐ๊ฐ ๋ถ์ผ์น
ํ์ง๋ง ์ด์ฉ ์ ์๋ค. ์ด๋ค ์ ํ์ ํ๋ ๊ธฐํ ๋น์ฉ(Trade Off)์ด ๋ฐ์ํ๋ค. ๋ฌด์ธ๊ฐ๋ฅผ ์ป์ผ๋ฉด ๋ฌด์ธ๊ฐ๋ฅผ ํฌ๊ธฐํด์ผ ํ๋ค. ๋ฐ๋ผ์ ๋ฐ์ดํฐ ์กฐํ ์ฑ๋ฅ ๊ฐ์ ๋ชฉ์ ์ผ๋ก ๋ ๋์ค๋ฅผ ์ฐ๋ ๊ฒฝ์ฐ์๋ ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ ์ฑ๋ฅ ํฅ์์ ํํ ๊ฒ์ด๋ค.
์ด๋ฌํ ์ด์ ๋ก ์บ์๋ฅผ ์ ์ฉ์ํค๊ธฐ์ ์ ์ ํ ๋ฐ์ดํฐ๋ ๋ค์๊ณผ ๊ฐ๋ค.
- ์์ฃผ ์กฐํ๋๋ ๋ฐ์ดํฐ
- ์ ๋ณํ์ง ์๋ ๋ฐ์ดํฐ
- ์ค์๊ฐ์ผ๋ก ์ ํํ๊ฒ ์ผ์นํ์ง ์์๋ ๋๋ ๋ฐ์ดํฐ
ํ์ง๋ง ์ฅ๊ธฐ๊ฐ ๋ฐ์ดํฐ๊ฐ ์ผ์นํ์ง ์๋ ๊ฑด ๋ฌธ์ ๊ฐ ๋ ์ ์๋ค. ๋ฐ๋ผ์ ์ ์ ํ ์ฃผ๊ธฐ๋ก ๋ฐ์ดํฐ๋ฅผ ๋๊ธฐํ์์ผ์ฃผ์ด์ผ ํ๋ค. ์ด ๋ ํ์ฉํ๋ ๊ธฐ๋ฅ์ด ๋ ๋์ค์ TTL ๊ธฐ๋ฅ(๋ง๋ฃ ์๊ฐ ์ค์ ๊ธฐ๋ฅ)์ด๋ค.
์ผ์ ์๊ฐ์ด ์ง๋๋ฉด ๋ฐ์ดํฐ๊ฐ ์บ์์์ ์ญ์ ๋๋ค. ๊ทธ๋ผ ํน์ ์ฌ์ฉ์๊ฐ ์กฐํ๋ฅผ ํ๋ ์๊ฐ Cache Miss๊ฐ ๋ฐ์ํ์ฌ DB์ ๋ฐ์ดํฐ๋ฅผ ์๋ก ์กฐํํด์์ ์บ์์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๊ฒ ๋๋ค. ์ฆ, ๋ฐ์ดํฐ๊ฐ ์๋กญ๊ฒ ๊ฐฑ์ ๋๋ ํจ๊ณผ๊ฐ ์๋ ๊ฒ!
- 2. ์บ์์ ์ ์ฅํ ์ ์๋ ๊ณต๊ฐ์ด ๋น๊ต์ ์๋ค.
- ์์์ ํ์ฉํ๋ TTL ๊ธฐ๋ฅ(๋ง๋ฃ ์๊ฐ ์ค์ ๊ธฐ๋ฅ)์ ํ์ฉํ๋ฉด ์บ์์ ๊ณต๊ฐ์ ํจ์จ์ ์ผ๋ก ์ธ ์ ์๋ค. ์์ฃผ ์กฐํํ์ง ์๋ ๋ฐ์ดํฐ๋ ๋ง๋ฃ ์๊ฐ์ ์ํด ๋ฐ์ดํฐ๊ฐ ์ญ์ ๋ ํ ๋๊น!
โ ํ์ค ์์ฝ
Cache Aside, Write Around ์ ๋ต์ ์ฌ์ฉํ ๋ ์ฃผ๋ก TTL์ ๊ฐ์ด ํ์ฉํ๋ค.