데이터베이스/Redis

Redis 자료구조 완벽 정리: Strings, Lists, Sets, Hashes, Sorted Sets

Jinwookoh 2025. 5. 5. 11:13

 

 

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