자료구조와 활용 사례
1. 주요 자료구조
- Strings: 가장 기본적인 타입으로, 텍스트뿐만 아니라 이미지 데이터(Binary), 숫자 등을 저장할 수 있음
- Lists: 삽입 순서대로 정렬된 문자열의 목록 (Linked List 방식)
- Sets: 순서가 없고 중복없는 문자열 집합으로, 집합 연산(합집합, 교집합 등)이 가능
- Sorted Sets (ZSets): Set과 유사하지만, 각 요소마다 ‘Score’라는 가중치를 부여하여 그 값에 따라 정렬
- Hashes: Field-Value 쌍으로 이루어진 맵 구조로, 객체(User Profile 등) 표현에 최적
- Bitmaps / Bitfields: 비트 단위 연산을 통해 공간 효율적으로 상태를 저장
- HyperLogLogs: 대규모 데이터 집합의 유니크한 요소 개수(Cardinality)를 추정할 때 사용
- Streams: 로그 데이터나 메시지 큐를 처리하기 위한 Append-only 로그 구조
2. 자료구조별 활용 사례
🚀 캐싱 및 상태 관리 (Strings, Hashes)
- 세션 관리: 사용자의 로그인 세션 정보를 저장하여 빠른 인증 처리 지원
- 데이터베이스 캐싱: DB 조회 결과를 저장해 응답 속도를 높이고 부하를 줄임
- 속도 제한 (Rate Limiting): 특정 API에 대한 요청 횟수를 카운트하여 과도한 접근 차단
🏆 실시간 랭킹 시스템 (Sorted Sets)
- 게임 스코어보드: 점수(Score) 기준으로 실시간으로 유저 순위를 계산하고 업데이트
- 인기 검색어: 검색 횟수를 점수로 활용하여 실시간 트렌드 노출
💬 메시징 및 대기열 (Lists, Streams)
- 작업 큐 (Job Queue): 처리해야 할 작업들을 리스트에 넣고 워커(Worker)가 순차적으로 처리하게 함
- 실시간 채팅/이벤트 로그: Stream 구조를 활용해 대용량 로그 데이터를 안정적으로 수집하고 소비
📊 분석 및 통계 (HyperLogLogs, Bitmaps)
- UV (Unique Visitor) 카운트: 수백만 명의 방문자 수를 매우 적은 메모리로 추정
- 출석 체크: 비트맵을 활용해 사용자의 일별 접속 여부를 최소한의 용량으로 저장