NestJS · Cache

캐싱 전략의 원본·무효화·일관성 기준

캐시는 빠른 응답을 위한 복사본이므로, 무엇이 원본이고 언제 무효화하며 오래된 값을 얼마나 허용할지 먼저 정해야 한다.

01

후보 선정

읽기 빈도가 높고 계산·외부 호출 비용이 큰 조회를 고른다.

02

키 설계

사용자, tenant, filter, page 같은 조건이 key에 빠지지 않게 한다.

03

저장

in-memory와 Redis 중 인스턴스 수와 공유 필요성에 맞는 저장소를 고른다.

04

무효화

생성·수정·삭제 명령 후 어떤 key를 지울지 코드와 이벤트로 고정한다.

Memory
단일 인스턴스 빠른 캐시 간단하지만 수평 확장 시 인스턴스마다 값이 다름
개발·작은 서비스에 적합
Redis
공유 캐시 여러 인스턴스가 같은 값을 사용
Redis 장애 정책 필요
TTL
시간 기반 만료 정확성보다 신선도 허용 범위를 기준으로 결정
너무 길면 stale 위험
Tag
묶음 무효화 사용자나 리소스 단위로 관련 key를 함께 제거
key 관리 복잡도 증가

조건 · 무효화 · 장애 점검

cache key 조건 권한과 tenant 조건이 cache key에 포함된다.
무효화 데이터 변경 뒤 오래된 응답이 계속 남지 않는다.
장애 캐시 저장소 실패가 전체 API 장애로 번지지 않는다.
측정 hit rate와 latency 개선을 확인한다.