백엔드 개발 · 중급
Redis에서 설정 가능한 다양한 eviction 정책(예: LRU, LFU, volatile-lru 등)에 대해 설명하고, 서비스 특성을 고려하여 적절한 정책을 선택하는 기준과 그 이유를 설명해 주세요.
힌트 · `maxmemory` 설정과 함께 어떤 데이터를 유지하고 어떤 데이터를 버릴지에 대한 정책별 기준과 시나리오를 고려하여 설명합니다.
LRULFUTTL메모리 사용량데이터 중요도
모범답안
Redis는 maxmemory 설정을 통해 메모리 사용량을 제한하고, 제한 초과 시 eviction 정책에 따라 데이터를 삭제합니다. 다양한 정책 중 대표적인 것은 LRU, LFU, volatile-lru 등이 있습니다.
LRU(Least Recently Used)는 가장 오랫동안 사용되지 않은 데이터를 삭제합니다. LFU(Least Frequently Used)는 사용 빈도가 가장 낮은 데이터를 삭제합니다. volatile-lru는 TTL이 설정된 키 중에서 LRU 방식으로 삭제합니다.
서비스 특성에 따라 적절한 정책을 선택해야 합니다. 예를 들어, 최근 데이터 접근 빈도가 높은 서비스에는 LRU가 적합합니다. 반면, 특정 데이터의 접근 빈도가 낮더라도 중요한 데이터라면 LFU나 volatile-lru (TTL 설정)를 통해 유지할 수 있습니다. 중요한 데이터는 TTL을 길게 설정하여 삭제 가능성을 낮출 수도 있습니다. 메모리 사용량과 데이터 중요도를 고려하여 최적의 정책을 선택하는 것이 중요합니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 캐시 (Redis) 면접 질문
- 캐시 무효화(Cache Invalidation)는 왜 중요하며, 이를 관리하기 위한 기본적인 방법으로는 어떤 것들이 있을까요?
- 가장 기본적인 캐싱 전략 중 하나인 'Cache-Aside' 패턴에 대해 설명해 주세요. 데이터 읽기 및 쓰기 시 어떻게 동작하나요?
- 캐시 무효화 전략 중 Write-through, Write-back, Lazy loading(Write-aside) 방식의 차이점과 각각의 장단점을 설명하고, 특정 상황에 적합한 전략을 선택하는 기준에 대해 설명해 주세요.
- Redis의 String, Hash, List, Set, Sorted Set과 같은 주요 데이터 구조 각각의 특징과 실제 서비스에서 어떤 용도로 활용될 수 있는지 구체적인 예시를 들어 설명해 주세요.
- Redis의 영속성(Persistence)을 제공하는 RDB와 AOF 방식의 동작 원리, 장단점을 비교하고, 데이터 유실 허용 범위와 복구 속도 관점에서 어떤 상황에 어떤 방식을 선택해야 하는지 설명해 주세요.
- Redis Sentinel은 무엇이며, 어떤 문제를 해결하기 위해 사용되는지 설명해 주세요. 또한, Sentinel이 제공하는 고가용성(High Availability) 기능과 동작 방식에 대해 구체적으로 설명해 주세요.