핵심 요약
우아한형제들이 운영 Redis 캐시의 allEntries 제거가 KEYS/SCAN의 차단으로 서비스 대기와 타임아웃 위험을 초래할 수 있음을 분석하고, 안전한 운영 방안과 주의점을 정리했습니다.
주요 경험
- CacheEvict의 allEntries가 cache-wide 제거를 트리거하며, KEYS/SCAN 선택에 따라 차단 여부가 달라짐을 확인
- 대규모 캐시 제거는 운영 환경에서 배치 로직으로 분리하고 Scan 기반으로 구성하는 사례를 제시
- Locking RedisCacheWriter와 Non-locking RedisCacheWriter의 차이 및 운영 시점의 고의적 차단 방지 필요성 강조
얻은 인사이트
- 전체 키 제거는 피하고, 필요 시 배치 로직으로 처리하는 것이 현명
- 고위험 명령 차단 정책의 영향과 예외 처리의 중요성 인식
- UNLINK/ Lazy freeing 관련 옵션 활용 검토 및 기본 설정 변경 시 SCAN 사용 여부 고려
