MANUAL CACHE

CACHE_MANAGER를 쓰면 캐시 정책이 서비스 코드로 내려온다

자동 인터셉터는 요청 응답을 감싸지만, 수동 캐싱은 key 생성, hit 판정, TTL 저장, reset 범위를 직접 책임진다.

@Inject(CACHE_MANAGER)서비스가 cache-manager 인스턴스를 직접 받는다.
get / set / reset읽기, 저장, 전체 삭제를 코드에서 호출한다.

Controller

요청 진입엔드포인트는 일반 서비스 메서드를 호출한다.
응답 형식 유지캐시 hit와 miss는 같은 DTO로 반환된다.

Service logic

1. key 만들기입력값과 권한 범위가 key에 반영되어야 한다.
2A. get hit값이 있으면 원본 호출 없이 즉시 반환한다.
2B. get miss값이 없으면 계산 또는 DB 조회로 새 결과를 만든다.
3. set with TTL결과와 만료 시간을 함께 저장한다.
4. reset/delete쓰기 작업 이후 필요한 범위만 지우는지 점검한다.

Cache store

in-memory단일 서버에서는 빠르지만 재시작 시 사라진다.
Redis여러 서버가 같은 캐시를 공유한다.
관측 대상hit ratio, key 수, 만료 실패를 확인한다.
key collision다른 사용자의 값이 섞이지 않게 한다.
TTL default무한 캐시가 생기지 않게 한다.
reset scope전체 삭제는 운영 영향이 큰 명령이다.
error path캐시 장애가 API 장애로 번지지 않게 한다.