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)
