data - LRU cache
๐ง What is caching
์บ์ฑ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ค๋๋ฐ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๊ฑฐ๋, ์คํํ๋๋ฐ ์ค๋ ๊ฑธ๋ฆฌ๋ ์ฐ์ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฏธ๋ฆฌ ๊ณ์ฐํ์ฌ ํ์ํ ๋ ์ต์ด๋ก ํ๋ฒ๋ง ๊ณ์ฐํ์ฌ ์ ์ฅํด๋๊ณ ์ฌ์ฌ์ฉํ๋ ๊ธฐ์ ์ ์๋ฏธํฉ๋๋ค.
ํ๋ก ํธ์ค๋์์๋ ํด๋ฆฌ์ด์ธํธ ์ปดํจํฐ์ ์บ์๋ฅผ ๋๊ณ , ์ด ์บ์์ ์ ์ ๋ฐฉ๋ฌธํ๋ ์นํ์ด์ง์ ๋ด์ฉ์ ์ ์ฅํด๋๊ณ ๋์ผํ ํ์ด์ง๋ฅผ ์ฌ๋ฐฉ๋ฌธ์ ์ด ์ ์ฅํด๋์ ์ฌ๋ณธ์ ํ์ด์ง๋ฅผ ๋ณด์ฌ์ฃผ๋ ๋ฐฉ์์ ์ทจํ ์ ์์ต๋๋ค.
๋ฐฑ์๋์์๋ ํด๋ผ์ด์ธํธ์์ ๋ฐ์ ์์ฒญ์ ๋ํ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์บ์์ ์ ์ฅํด๋๊ณ , ๋์ค์ ๋์ผํ ์์ฒญ์ด ๋ค์ด์์ ๋, ์ ์ฅํด๋ ๊ฒฐ๊ณผ๋ฅผ ๊ทธ๋๋ก ์๋ตํฉ๋๋ค. ์ด๋ ๊ฒ ํ์ฌ ์กฐํ ์๋๋ฅผ ํฅ์์ํค๊ณ , ์๋ฒ ๋จ์ ๋ถํ๋ฅผ ์ค์ผ ์ ์์ต๋๋ค.
๋คํธ์ํฌ์์๋ ํ๋ก์ ์๋ฒ๋ CDN์ ๋ํ์ ์ธ ์บ์ฑ ์ฌ๋ก๋ก ๋ณผ ์ ์์ต๋๋ค.
์บ์ฑ ์ ๋ต์ด๋?
์ผ๋ฐ์ ์ผ๋ก ์บ์ฑ์ ์ํด ์ฌ์ฉ๋๋ ์ ์ฅ ๋งค์ฒด๋ ๊ฐ๊ฒฉ์ด ๋น์๋๋ค. ๋ฐ๋ผ์, ์ ์ฅ ๋ฉ์ฒด์ ์ฉ๋์ ์ ํํ์ฌ ์ต๋ํ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ๋ ์ ๋ต์ ์ทจํฉ๋๋ค. ์ด๊ฒ์ ์บ์ฑ ์ ๋ต์ด๋ผ๊ณ ํฉ๋๋ค.
์บ์ฑ ์ ๋ต์ ์บ์ ์ฉ๋์ด ๊ฝ ์ฐผ์ ๋, ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ๋จ๊ฒจ๋๊ณ , ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ์ง์์ผํ ์ง์ ๋ํ ๋ฐฉ๋ฒ์ ๋ปํฉ๋๋ค. ์บ์ฑ ์ ๋ต์๋ ์๋์ ๊ฐ์ ์ข ๋ฅ๊ฐ ์์ต๋๋ค.
LRU(Least Recently Used) cache
MRU(Most Recently Used) cache
LFU(Least Frequently Used) cache
์บ์ฑ ์ ๋ต - LRU cache(Least Recently Used)
์ฌ๊ธฐ์๋ LRU cache ์ ๋ต์ ๋ํด์ ์์๋ณด๊ณ ์ ํฉ๋๋ค.
LRU cache ์ ๋ต์ ์ต๊ทผ์ ์ฌ์ฉ๋ ๋ฐ์ดํฐ์ผ์๋ก ์์ผ๋ก๋ ์ฌ์ฉ๋ ๊ฐ๋ฅ์ฑ์ด ๋๋ค๋ผ๋ ๊ฐ์ค์ ๋ฐํ์ผ๋ก ๋ง๋ค์ด์ก์ต๋๋ค. ์ด ์ ๋ต์ ๊ฐ์ฅ ์ค๋ซ๋์ ์ฐธ์กฐ(์ฌ์ฉ)๋์ง ์์ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ์ฌ ๊ณต๊ฐ์ ํ๋ณดํ๊ณ , ์กฐํํ ๋ฐ์ดํฐ๋ ๊ฐ์ฅ ์ต๊ทผ์ ์ฌ์ฉ๋ ๋ฐ์ดํฐ๋ก ๊ฐ์ฃผํฉ๋๋ค. ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ ํ๋์ด์๊ณ ์์ฃผ ์์ธ์คํ๋ ๋ฐ์ดํฐ์ ๋น ๋ฅด๊ฒ ์์ธ์ค ํ ์ ์์ด์ผ ํ๋ ์๋๋ฆฌ์ค์ ์ ์ฉํฉ๋๋ค.
LRU cache์ ์ธ๋ถ ๋์๋ฐฉ์์ ์๋์ ๊ฐ์ต๋๋ค.
์๋ก์ด ๋ฐ์ดํฐ๊ฐ ์ถ๊ฐ๋ ๊ฒฝ์ฐ,
์บ์์ ๊ณต๊ฐ์ด ๊ฐ๋์ฐจ์ง ์์ ๊ฒฝ์ฐ, ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ฅ ์ต๊ทผ ์์น๋ก ์ด๋์ํต๋๋ค.
์บ์์ ๊ณต๊ฐ์ด ๊ฐ๋์ฐฌ ๊ฒฝ์ฐ, ๊ฐ์ฅ ์ค๋ซ๋์ ์ฌ์ฉ๋์ง ์์ ๋ฐ์ดํฐ๋ฅผ ์ ๊ฑฐํ๊ณ , ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ฅ ์ต๊ทผ ์์น๋ก ์ด๋์ํต๋๋ค.
์ด๋ฏธ ์กด์ฌํ๋ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ ๊ฒฝ์ฐ,
ํด๋น ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ฅ ์ต๊ทผ ์์น๋ก ์ด๋์ํต๋๋ค.
๐ ์ฉ์ด๋ ์์๋๋ฉด ์ข์ต๋๋ค.
Cache Hit: ์บ์์ ์ํ๋ ๋ฐ์ดํฐ๊ฐ ์์ด, ๋์คํฌ์ ์ ๊ทผํ์ง ์๊ณ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒ
Cache Miss: ์บ์์ ์ํ๋ ๋ฐ์ดํฐ๊ฐ ์๋ ๊ฒ
Eviction: ์บ์ ๊ณต๊ฐ์ด ๊ฝ์ฐจ์ ๋ฐ์ดํฐ๋ฅผ ์ ๊ฑฐํ๋ ๊ฒ
LRU cache ๋์๋ฐฉ์ ์์๋ณด๊ธฐ
์๋์ ์์์์๋ ๊ฐ์ฅ ์ผ์ชฝ์ ์๋ ๋ฐ์ดํฐ๊ฐ ๊ฐ์ฅ ์ต์ ์ [์กฐํ/์ฝ์ ] ๋ฐ์ดํฐ๋ผ๊ณ ๊ฐ์ ํฉ๋๋ค.
Python์์ LRU ์บ์ ์ฌ์ฉ
functools ๋ชจ๋์ lru_cache ๋ฐ์ฝ๋ ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ LRU ์บ์๋ฅผ ์ฝ๊ฒ ๊ตฌํํ ์ ์์ต๋๋ค.
maxsize ์ ์๋ฏธ
lru_cache ๋ฐ์ฝ๋ ์ด์ ๋งค๊ฐ๋ณ์ maxsize๋ ์บ์์ ์ ์ฅํ ์ ์๋ ์ต๋ ํญ๋ชฉ ์๋ฅผ ์ง์ ํฉ๋๋ค. ์บ์๊ฐ ์ด ํฌ๊ธฐ๋ฅผ ์ด๊ณผํ๋ฉด ์ต๊ทผ์ ๊ฐ์ฅ ์ ๊ฒ ์ฌ์ฉ๋ ํญ๋ชฉ์ ์ ํญ๋ชฉ์ ์ํ ๊ณต๊ฐ์ ํ๋ณดํ๊ธฐ ์ํด ์ ๊ฑฐ๋ฉ๋๋ค.
๋ช ์์ ์ผ๋ก ์ง์ ํ์ง ์์ ๊ฒฝ์ฐ maxsize์ ๊ธฐ๋ณธ ๊ฐ์ 128์ ๋๋ค. ์ด ๊ฐ์ None์ผ๋ก ์ค์ ํ๋ฉด ์บ์๊ฐ ์ ํ ์์ด ์ปค์ง ์ ์๊ธฐ ๋๋ฌธ์ ์ฃผ์ํด์ผํฉ๋๋ค.
LRU ์บ์ ํด๋์ค ๊ตฌํ
Last updated