패스잇
백엔드 개발 · 심화

Redis에서 특정 키(Hot Key)에 대한 접근이 집중되거나, 매우 큰 키(Big Key)가 존재할 때 발생할 수 있는 성능 문제(예: 네트워크 대역폭 소모, CPU 부하)를 설명하고, 이를 진단하고 완화하기 위한 구체적인 방법들을 제시해 주세요.

힌트 · redis-cli --hotkeys, redis-cli --bigkeys 같은 도구 활용, 키 분할(sharding), 데이터 구조 최적화, Read Replica 활용, 캐시 계층 추가 등을 고려하세요.

Hot KeyBig KeyRedis Cluster캐시 미스레플리카

모범답안

네, Redis에서 Hot Key와 Big Key로 인한 성능 문제와 해결 방안에 대해 설명드리겠습니다.

Hot Key는 특정 키에 대한 요청이 집중되어 해당 키를 처리하는 Redis 인스턴스에 과부하를 유발합니다. 이로 인해 네트워크 대역폭이 소모되고 CPU 사용률이 높아져 응답 지연이나 서비스 장애로 이어질 수 있습니다. Big Key는 단일 키가 너무 많은 데이터를 포함하고 있어, 해당 키를 읽거나 쓸 때 많은 네트워크 트래픽과 메모리 사용량을 발생시켜 성능 저하를 일으킵니다.

이러한 문제를 진단하기 위해 redis-cli --hotkeys 명령어를 사용하여 Hot Key를 파악하고, redis-cli --bigkeys 명령어로 Big Key를 탐지할 수 있습니다.

해결 방안으로는 다음과 같은 방법들을 고려할 수 있습니다.

첫째, Hot Key의 경우, 해당 키에 대한 요청을 여러 Redis 인스턴스로 분산시키는 키 분할(sharding) 전략을 적용할 수 있습니다. Redis Cluster를 활용하면 이를 자동화할 수 있습니다.

둘째, Big Key의 경우, 데이터 구조를 최적화하여 단일 키에 너무 많은 데이터가 집중되지 않도록 합니다. 예를 들어, 큰 해시나 리스트 대신 여러 개의 작은 키로 분리하거나, Redis의 Sorted Set이나 Set과 같은 효율적인 데이터 구조를 활용하는 것을 고려할 수 있습니다.

셋째, 읽기 요청이 많은 Hot Key의 경우, Read Replica를 활용하여 읽기 부하를 분산시키는 것도 효과적입니다.

넷째, 캐시 계층을 추가하여 자주 사용되는 데이터를 메모리 상위 계층에 두거나, 캐시 미스 발생 시에도 빠르게 데이터를 가져올 수 있도록 설계하는 것도 중요합니다.

이러한 방법들을 통해 Redis의 성능을 안정적으로 유지하고 확장성을 확보할 수 있습니다.

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

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

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

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