패스잇
백엔드 개발 · 중급

Redis의 String, Hash, List, Set, Sorted Set과 같은 주요 데이터 구조 각각의 특징과 실제 서비스에서 어떤 용도로 활용될 수 있는지 구체적인 예시를 들어 설명해 주세요.

힌트 · 각 데이터 구조가 제공하는 연산의 시간 복잡도와 유즈케이스(예: 랭킹, 팔로우/팔로워, 메시지 큐)를 중심으로 설명합니다.

Key-Value캐싱세션 관리순위 리스트Pub/Sub

모범답안

Redis는 다양한 데이터 구조를 제공하여 여러 서비스 요구사항을 충족할 수 있습니다.

String은 단순한 Key-Value 저장에 적합하며, 캐싱, 세션 관리, 간단한 카운터 등에 활용됩니다. 예를 들어, 사용자 ID를 키로, 사용자 이름을 값으로 저장하여 빠르게 사용자 정보를 조회할 수 있습니다.

Hash는 객체 저장을 위한 구조로, 사용자 프로필 정보나 상품 정보를 저장하는 데 유용합니다. Key-Value 쌍을 필드로 가지므로, 객체의 특정 필드만 업데이트하는 것이 가능합니다.

List는 순서가 있는 데이터 목록을 저장하며, 메시지 큐, 최근 활동 기록 등에 활용됩니다. LPUSH와 RPOP을 사용하여 간단한 큐를 구현할 수 있습니다.

Set은 중복 없는 데이터 집합을 저장하며, 팔로우/팔로워 관계, 그룹 멤버십 관리 등에 사용됩니다. 특정 사용자가 팔로우하는 사용자 목록을 Set으로 관리하고, 교집합 연산을 통해 공통 팔로워를 찾을 수 있습니다.

Sorted Set은 점수를 기준으로 정렬된 데이터 집합을 저장하며, 랭킹 시스템, 실시간 순위 등에 활용됩니다. 사용자의 점수를 기준으로 랭킹을 매기고, ZRANGE를 사용하여 상위 랭커를 쉽게 조회할 수 있습니다. 각 데이터 구조는 특정 연산에 대해 최적화된 시간 복잡도를 제공하므로, 서비스 요구사항에 맞는 데이터 구조를 선택하는 것이 중요합니다.

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

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

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

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