37
AI 요약
이 글은 AI가 원문을 분석하여 핵심 내용을 요약한 것입니다.
Spring의 @CacheEvict와 Redis 캐시 무효화
이 게시물은 Spring Boot 환경에서 Redis 캐시를 관리하는 @CacheEvict 어노테이션의 동작 원리와 allEntries=true 설정의 위험성에 대해 설명합니다.@CacheEvict 메커니즘
- @CacheEvict는 키 기반 캐시 삭제를 수행하며, allEntries 옵션으로 전체 캐시를 삭제할 수 있음
- allEntries=true일 경우 내부적으로 RedisCache의 clear() 메서드를 호출하여 와일드카드 패턴으로 키를 조회 후 삭제
Redis의 키 삭제 전략
- DefaultRedisCacheWriter의 batchStrategy로 KEYS 또는 SCAN 방식을 사용
- KEYS는 전체 키를 탐색하는 O(N) 연산으로 Redis 요청을 블록하여 지연과 장애를 유발할 수 있어 위험
- SCAN은 커서 기반으로 점진적 탐색하나, 기본 설정은 KEYS임
- 운영환경에서는 DEL 명령 대신 비동기적 메모리 해제 UNLINK 사용 권장

