Redis는 인메모리 기반의 NoSQL 데이터베이스로, 빠른 속도와 다양한 자료구조를 활용해 캐싱, 세션 저장, 메시지 브로커 등 다양한 분야에서 폭넓게 사용되고 있습니다. 이 글에서는 Redis가 제공하는 주요 5가지 자료구조에 대해 예제와 함께 정리하고, 어떤 상황에서 어떤 자료구조를 사용하는 것이 적합한지도 함께 살펴보겠습니다.
1. Strings (문자열)
📌 개념
Redis에서 가장 기본적인 자료구조입니다. 문자열은 단일 키에 문자열, 정수, 부동소수점 숫자 등 다양한 데이터를 저장할 수 있습니다. 내부적으로 최대 512MB까지 저장 가능하며, 다양한 연산도 지원합니다.
💡 예제
SET key1 "Hello Redis"
GET key1
INCR counter
✅ 사용 예시
- 로그인 세션 토큰 저장
- 카운터 또는 점수 증가
- 캐시된 HTML 조각 저장
2. Lists (리스트)
📌 개념
문자열들의 연결 리스트로 구성된 자료구조입니다. 삽입, 삭제 시 순서를 보장하며 FIFO(선입선출) 또는 LIFO(후입선출) 방식으로 사용할 수 있습니다.
💡 예제
LPUSH logs "로그1"
RPUSH logs "로그2"
LRANGE logs 0 -1
✅ 사용 예시
- 로그 수집 및 조회
- 작업 큐 구현
- 채팅 메시지 저장
3. Sets (집합)
📌 개념
중복이 없는 문자열 집합입니다. 내부적으로 정렬되지 않으며, 교집합, 합집합, 차집합 등의 연산이 빠르게 수행됩니다.
💡 예제
SADD users "user1"
SADD users "user2"
SISMEMBER users "user1"
SMEMBERS users
✅ 사용 예시
- 태그 관리
- 유저의 관심사 목록
- 로그인한 사용자 목록
4. Hashes (해시)
📌 개념
필드-값 쌍의 구조로, 하나의 키 안에 여러 필드를 저장할 수 있어 객체나 레코드처럼 다룰 수 있습니다. RDBMS의 한 행(row)과 비슷한 개념입니다.
💡 예제
HSET user:1000 name "Alice"
HSET user:1000 age 30
HGETALL user:1000
✅ 사용 예시
- 사용자 프로필 정보 저장
- 설정값 저장
- 쇼핑몰 상품 속성 관리
5. Sorted Sets (정렬된 집합)
📌 개념
기본 Set과 유사하지만 각 요소에 점수(score)가 부여되어 자동 정렬됩니다. 점수를 기준으로 빠른 검색이 가능하며, 리더보드나 랭킹 시스템에 최적화되어 있습니다.
💡 예제
ZADD leaderboard 100 "user1"
ZADD leaderboard 200 "user2"
ZRANGE leaderboard 0 -1 WITHSCORES
✅ 사용 예시
- 게임 랭킹
- 인기 게시물 정렬
- 시간 기반 스코어 저장
✅ 각 자료구조 선택 기준 요약
자료구조 | 특징 | 적합한 사용 사례 |
Strings | 단일 값 저장 | 캐시, 세션, 점수, 토큰 등 |
Lists | 순서 있는 문자열 목록 | 로그 저장, 메시지 큐 |
Sets | 중복 없는 집합 | 태그, 유저 그룹, 유니크 값 |
Hashes | 필드-값 해시맵 | 사용자 정보, 상품 속성 |
Sorted Sets | 점수 기반 정렬된 집합 | 랭킹 시스템, 스코어 보드 |
🔚 마무리
Redis는 단순한 캐시 서버가 아니라 강력한 데이터 처리 도구입니다. 위에서 소개한 자료구조들을 잘 이해하고 목적에 맞게 선택하여 사용한다면, 성능과 확장성 면에서 매우 효율적인 시스템을 구축할 수 있습니다.
특히 Redis는 단일 스레드 기반으로 작동하지만, 자료구조의 특성과 연산 최적화를 통해 엄청난 속도를 제공합니다. 앞으로 Redis를 활용한 실전 예제도 함께 다뤄보겠습니다.
'데이터베이스 > Redis' 카테고리의 다른 글
Redis를 이용한 접속 대기열 구현 방법 (0) | 2025.05.10 |
---|---|
Redis로 캐시 구현하는 방법 (0) | 2025.05.10 |
Redis와 AWS SQS (0) | 2025.04.17 |
Redis TTL (Time-To-Live) 이란? (0) | 2025.03.03 |
Redis RDB vs AOF 비교 (0) | 2025.03.03 |