-
Notifications
You must be signed in to change notification settings - Fork 0
[FEAT] chat 기록 redis에 저장 #120
Description
📝 Description
책임 분리를 위해 저는 Core를 선택하겠습니다.
Core = 데이터 오너 (DB 저장 + Redis 저장 + 세션 관리)
FastAPI = AI 워커 (Redis 읽기 + LLM 호출 + 답변 생성)
-
현재 Core에서 DB에 ChatMessage를 저장하고 있음. DB에 저장할 때 같은 시점에 Redis에도 저장 ! -> 정합성 보장
-
세션 생명주기가 Core에 있음
세션 생성/종료 = Core
메시지 카운트 = Core
Redis TTL 관리도 Core에서 해야 세션 상태랑 일치함 -
실패 처리 간편
-
Core 저장 방식:
FastAPI 응답 받음 → DB 저장 + Redis 저장 (한 트랜잭션)
FastAPI 실패 → fallback 응답 → fallback도 Redis에 저장 -
FastAPI 저장 방식:
FastAPI가 Redis 저장 → Core에 응답 → Core가 DB 저장
근데 Core → DB 저장 실패하면? Redis에는 있고 DB에는 없는 유령 데이터 발생
Redis (하나의 인스턴스)
├── refresh:admin-001 → 리프레시 토큰 (TTL: 7일)
├── refresh:admin-002 → 리프레시 토큰
├── chat:550e8400-... → 대화 내역 (TTL: 30분) <- 안전장치, 키오스크 종료 시 redis 삭제
├── chat:661f9500-... → 대화 내역
└── ...
채팅관리용 Redis를 하나 더 파면 오히려 관리하기 복잡할 것.