sonamu.config.ts์์ ์บ์๋ฅผ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ์์๋ด
๋๋ค.
BentoCache๋?
BentoCache๋ Multi-tier ์บ์ฑ์ ์ง์ํ๋ TypeScript ์บ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. ์ฃผ์ ํน์ง:- L1/L2 ๋ ์ด์ด: ๋ฉ๋ชจ๋ฆฌ(๋น ๋ฆ) + ์๊ตฌ ์ ์ฅ์(๋๋ฆผํ์ง๋ง ๊ณต์ ๊ฐ๋ฅ)
- ๋ค์ํ ๋๋ผ์ด๋ฒ: Memory, Redis, File, Knex ์ง์
- Bus ์์คํ : ๋ถ์ฐ ์บ์ ๋ฌดํจํ
- Tag ๊ธฐ๋ฐ ๋ฌดํจํ: ์ฌ๋ฌ ์บ์๋ฅผ ๊ทธ๋ฃน์ผ๋ก ๊ด๋ฆฌ
- TTL & Grace Period: ๋ง๋ฃ ๋ฐ Stale-While-Revalidate
๊ธฐ๋ณธ ์ค์
sonamu.config.ts
sonamu.config.ts์ server.cache ํ๋์ ์บ์ ์ค์ ์ ์ถ๊ฐํฉ๋๋ค:
default: ๊ธฐ๋ณธ์ผ๋ก ์ฌ์ฉํ ์คํ ์ด ์ด๋ฆstores: ์คํ ์ด ์ค์ ๊ฐ์ฒด (์ต์ 1๊ฐ ์ด์ ํ์)
๋๋ผ์ด๋ฒ ์ข ๋ฅ
Sonamu๋ 5๊ฐ์ง ๋๋ผ์ด๋ฒ๋ฅผ ์ ๊ณตํฉ๋๋ค:memory
๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฐ ์บ์
(๋น ๋ฅด์ง๋ง ํ๋ก์ธ์ค ์ฌ์์ ์ ์ญ์ )
redis
Redis ๊ธฐ๋ฐ ์บ์
(์ฌ๋ฌ ํ๋ก์ธ์ค ๊ฐ ๊ณต์ ๊ฐ๋ฅ)
file
ํ์ผ ์์คํ
๊ธฐ๋ฐ ์บ์
(์๊ตฌ ์ ์ฅ)
knex
๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ธฐ๋ฐ ์บ์
(๊ธฐ์กด DB ํ์ฉ)
redisBus
๋ถ์ฐ ์บ์ ๋ฌดํจํ ๋ฒ์ค
(์ฌ๋ฌ ์๋ฒ ๊ฐ ๋๊ธฐํ)
Import ๋ฐฉ๋ฒ
Store ๊ตฌ์ฑ
L1 ๋ ์ด์ด (๋ฉ๋ชจ๋ฆฌ ์บ์)
L1์ ๋ก์ปฌ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋์ด ๊ฐ์ฅ ๋น ๋ฆ ๋๋ค.- ํ๋ก์ธ์ค ๋ด์์๋ง ์ ํจ
- ์๋ฒ ์ฌ์์ ์ ์ญ์ ๋จ
- ๋คํธ์ํฌ I/O ์์ (๊ฐ์ฅ ๋น ๋ฆ)
L2 ๋ ์ด์ด (์๊ตฌ ์ ์ฅ์)
L2๋ ์ฌ๋ฌ ํ๋ก์ธ์ค/์๋ฒ ๊ฐ ๊ณต์ ๊ฐ๋ฅํ ์ ์ฅ์์ ๋๋ค.- Redis
- File
- Knex (DB)
- ์ฌ๋ฌ ์๋ฒ ๊ฐ ์บ์ ๊ณต์
- ์๊ตฌ ์ ์ฅ (์ฌ์์ ํ์๋ ์ ์ง)
- ๋น ๋ฅธ ๋คํธ์ํฌ ์ก์ธ์ค
Bus ๋ ์ด์ด (๋ถ์ฐ ๋ฌดํจํ)
์ฌ๋ฌ ์๋ฒ๊ฐ ์์ ๋, ํ ์๋ฒ์์ ์บ์๋ฅผ ์ญ์ ํ๋ฉด ๋ค๋ฅธ ์๋ฒ์๋ ์๋ฆฝ๋๋ค.๋ฉํฐ ์คํ ์ด ์ค์
์ฉ๋์ ๋ฐ๋ผ ์ฌ๋ฌ ์คํ ์ด๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค:์คํ ์ด ์ฌ์ฉํ๊ธฐ
์ค์ ์์
1. ๋จ์ผ ์๋ฒ (๋ฉ๋ชจ๋ฆฌ๋ง)
- ๋จ์ผ ์๋ฒ ์ด์
- ์บ์ ์ฌ์์ฑ์ด ๋น ๋ฆ
- ์๋ฒ ์ฌ์์์ด ๋๋ฌผ์
2. ๋ค์ค ์๋ฒ (Redis ๊ณต์ )
- ๋ก๋ ๋ฐธ๋ฐ์ + ์ฌ๋ฌ ์๋ฒ
- ์๋ฒ ๊ฐ ์บ์ ๊ณต์ ํ์
- ์๋ฒ ์ฌ์์ ํ์๋ ์บ์ ์ ์ง
3. ๊ณ์ธต๋ณ ์ค์ (์ฑ๋ฅ ์ต์ ํ)
๋๋ผ์ด๋ฒ ์ต์ ์์ธ
Memory Driver
"10kb", "5mb", "1gb" ๋๋ ๋ฐ์ดํธ ์(1024)