- 목표: API GET 응답을 Redis로 캐싱해 응답 속도 향상, DB 부하 감소
- 구성:
src/utils/redisClient.ts: Redis
연결/유틸
src/middlewares/cacheMiddleware.ts
: GET 응답 캐싱/무효화 미들웨어
미들웨어 API
import { cache, invalidateCacheByKey, invalidateCacheByPattern } from "../middlewares/cacheMiddleware";
router.get("/path", cache({ ttlSeconds: 30, varyByAuth: true }), controller);
- 옵션
- ttlSeconds: 캐시 TTL(초), 기본 60
- varyByAuth: 사용자별 캐시 분리 여부, 기본 true
- keyBuilder(req): 캐시 키를 직접 정의하고 싶을 때 사용
기본 키 규칙
- 형식:
cache:GET:<baseUrl>:<path>:<u:<userId>|anon>:<queryString>
- 응답 헤더:
- X-Cache: HIT|MISS
- Cache-Key: <실제 캐시 키>
현재 적용 현황
- 견적요청:
GET /estimateRequests/active
(TTL 15s, 사용자별)
- 일정관리:
GET /mover-schedules/monthly/:year/:month
(TTL 60s, 사용자별)
- 찜하기:
GET /favorites/movers
(TTL 30s, 사용자별)
GET /favorites/:moverId/status
(TTL 15s, 사용자별)
라우트에 적용 방법