패스잇
백엔드 개발 · 심화

Redis의 maxmemory-policy 설정이 서비스의 데이터 접근 패턴 및 메모리 사용량에 미치는 영향을 심층적으로 분석하고, 특정 워크로드(예: 실시간 랭킹, 세션 관리)에 최적화된 정책을 선택하기 위한 기준과 추가적인 성능 튜닝 방안(예: maxmemory-samples, 데이터 구조 선택)을 설명해 주세요.

힌트 · allkeys-lru, volatile-lfu 등 각 정책의 동작 원리와 장단점을 비교하고, 데이터 타입별 메모리 효율성 및 샘플링 횟수가 정확도에 미치는 영향을 설명하세요.

LRUTTL휘발성 키메모리 단편화maxmemory-samples

모범답안

Redis의 maxmemory-policy는 메모리 부족 시 어떤 데이터를 삭제할지 결정하는 중요한 설정입니다. 서비스의 데이터 접근 패턴과 메모리 사용량에 직접적인 영향을 미치죠.

allkeys-lru는 전체 키 중에서 가장 최근에 사용되지 않은 데이터를 삭제합니다. 캐시 히트율이 높고 데이터 접근이 균일할 때 효과적입니다. 반면 volatile-lru는 TTL이 설정된 키 중에서 LRU 방식으로 삭제하므로, 휘발성 데이터 관리에 유용합니다.

실시간 랭킹처럼 자주 업데이트되고 오래된 데이터는 빠르게 삭제되어야 하는 워크로드에는 volatile-lfu나 allkeys-lfu가 더 적합할 수 있습니다. LFU(Least Frequently Used)는 사용 빈도가 낮은 데이터를 우선적으로 삭제하여 자주 사용되는 데이터를 더 오래 보존합니다.

최적의 정책 선택 기준은 데이터의 휘발성 여부, 접근 빈도, 그리고 삭제 시 허용 가능한 데이터 손실 정도입니다.

추가적인 성능 튜닝으로는 maxmemory-samples 값을 조정하여 샘플링 정확도를 높일 수 있습니다. 샘플링 횟수가 늘어나면 LRU/LFU 알고리즘의 정확도가 향상되지만, CPU 사용량도 증가하므로 적절한 균형점을 찾아야 합니다. 또한, 해시, 리스트, 집합 등 데이터 구조 선택도 메모리 효율성에 영향을 미치므로, 각 데이터 타입의 메모리 사용 패턴을 이해하고 최적화하는 것이 중요합니다. 메모리 단편화를 줄이기 위한 노력도 병행하면 좋습니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 캐시 (Redis) 면접 질문

← 캐시 (Redis) 면접 질문 전체 보기