본문으로 건너뛰기

캐시

이 문서로 해결할 질문

  • Consumer에서 Redis 캐시를 쓰는 곳은 어디인가요?
  • Producer 캐시와 어떻게 정합을 맞추나요?
  • 챗봇 Handler 캐시 TTL은 무엇인가요?

Consumer 캐시 역할

Consumer는 조회 성능 최적화를 위해 Handler 단에서 Redis를 직접 사용합니다. Producer Cache-Aside와 동일 Redis 인스턴스를 공유합니다.

용도키 예TTL 정의
챗봇 재료 메타ingredient:by-id:{id}CHATBOT_INGREDIENT_BY_ID_CACHE_TTL_SECONDS (3600초)
챗봇 카테고리recipe:chatbot:food-categoriesCHATBOT_FOOD_CATEGORIES_CACHE_TTL_SECONDS (3600초)
recipe ingestion 카테고리recipe:ingestion:food-categoriesRECIPE_INGESTION_CATEGORY_CACHE_TTL_SECONDS (3600초)

TTL 등 캐시 정책은 server/consumer/.../chatbot-cache.policy.ts에 정의되어 있습니다.

사용 Handler

Handler캐시 내용
InventoryHandler재료 id→name (Producer 키와 구분)
FoodCategoriesHandler레시피·재료 활성 카테고리 JSON
category-context.service (ingestion submit)LLM 배치용 카테고리 컨텍스트

Producer와의 관계

Consumer Handler 캐시는 무효화 토픽 대상이 아닐 수 있습니다. TTL 만료 또는 도메인 이벤트 후 자연 갱신에 의존하는 키가 있습니다. Producer 쪽 user/inventory/recipe/recommendation 키는 캐시 무효화로 삭제됩니다.

챗봇 크레딧 차감 → 캐시 연동

크레딧 실제 차감 시 ChatbotCreditServiceUSER_PROFILE 무효화를 발행해 Producer user:{userId} 캐시와 정합을 맞춥니다.

크레딧 차감 흐름의 자세한 내용은 챗봇 처리를 참고하세요.

관련 문서