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)
Redis Driver
File Driver
Knex Driver
Redis Bus Driver
ν μ€νΈ νκ²½
ν μ€νΈ νκ²½μμλ μλμΌλ‘ λ©λͺ¨λ¦¬ λλΌμ΄λ²κ° μ¬μ©λ©λλ€:μ£Όμμ¬ν
λ€μ λ¨κ³
@cache λ°μ½λ μ΄ν°
λ©μλμ μΊμ μ μ©νκΈ°
μΊμ 무ν¨ν
Tag κΈ°λ° μΊμ 무ν¨ν
μΊμ μ λ΅
TTL, Grace, Namespace νμ©