가장 기본적인 자료형. 문자열, 숫자, 직렬화된 JSON 등 저장
user:1:name
=
"Alice"
SET user:1:name "Alice"
user:1:age
=
28
INCR user:1:age → 29
session:abc123
=
"token_xyz" TTL:3600s
SETEX (만료 시간 포함)
사용: 세션 토큰, 카운터, 캐시, 분산 락
양방향 연결 리스트. LPUSH/RPUSH로 삽입, LPOP/RPOP으로 제거
feed:timeline → [0] → [1] → [2] → [3] → [4]
[0] "뉴스C (최신)"
[1] "뉴스B"
[2] "뉴스A"
[3] "뉴스Z"
[4] "뉴스Y (오래됨)"
LPUSH feed:timeline "뉴스C" | LRANGE feed:timeline 0 9 | LTRIM feed:timeline 0 99
사용: 뉴스피드, 메시지 큐, 최근 방문 기록
중복 없는 집합. 교집합/합집합/차집합 연산 지원
tags:post:1 (순서 없음, 중복 불가)
javascript
database
redis
nosql
backend
SADD tags:post:1 "redis" | SISMEMBER → 존재 여부
SINTER tags:post:1 tags:post:2 → 공통 태그 (교집합)
사용: 태그 시스템, 팔로워/팔로잉, 좋아요 목록, 방문자 집합
필드-값 쌍의 맵. 객체를 효율적으로 저장 (각 필드 개별 접근 가능)
user:1001
| name | "Alice" |
| age | 28 |
| city | "서울" |
| score | 9850 |
HSET user:1001 name "Alice" age 28
HGET user:1001 name → "Alice"
HINCRBY user:1001 score 150 → 10000
사용: 사용자 프로필, 상품 정보, 설정값 저장
각 멤버에 점수(score)를 부여해 정렬된 집합. 범위 조회 O(log N)
leaderboard:game (score 기준 정렬)
#1Alice9850
#2Carol7200
#3Bob5500
#4Dave3100
ZADD leaderboard 9850 "Alice"
ZREVRANK leaderboard "Bob" → 2 (0-indexed)
ZREVRANGE leaderboard 0 9 WITHSCORES → Top 10
사용: 실시간 리더보드, 우선순위 큐, 시간순 피드