비전공자도 이해할 수 있는 Redis 중급/실전
redis-sorted-set-data-structure
✅ Sorted Set (ZSet)
Redis에서 Sorted Set(ZSet)은 score(점수)를 기준으로 자동 정렬되는 중복 없는 자료구조이다. 이런 특성 때문에 실제 서비스에서 랭킹 시스템, 실시간 인기 데이터 관리처럼 순서와 가중치가 중요한 경우에 주로 활용된다.
참고) Redis의 Sorted Set에서는 key-value의 구조에서 value를 member라 부른다.
✅ Sorted Set 생성 및 데이터 저장
# Sorted Set에 데이터 저장
# ZADD [key] [score] [member]
$ ZADD ranking:2025 5 jihoon # ranking:2025에서 jihoon의 score는 5
$ ZADD ranking:2025 9 jaeseong # ranking:2025에서 jaeseong의 score는 9
$ ZADD ranking:2025 2 yeonwoo # ranking:2025에서 yeonwoo의 score는 2
✅ Sorted Set으로부터 데이터 조회
# member + score 조회
# ZRANGE [key] [start index] [end index] WITHSCORES
$ ZRANGE ranking:2025 0 1 WITHSCORES # 0번 인덱스부터 1번 인덱스까지의 데이터를 오름차순으로 조회
$ ZRANGE ranking:2025 0 -1 WITHSCORES # 0번 인덱스(처음)부터 -1번 인덱스(끝)까지의 데이터를 조회
$ ZRANGE ranking:2025 0 -1 WITHSCORES REV # REV : 역순(내림차순)으로 조회
# member 조회
# ZRANGE [key] [start index] [end index]
$ ZRANGE ranking:2025 0 1 # 0번 인덱스부터 1번 인덱스까지의 데이터를 오름차순으로 조회
$ ZRANGE ranking:2025 0 -1 # 0번 인덱스(처음)부터 -1번 인덱스(끝)까지의 데이터를 조회
$ ZRANGE ranking:2025 0 -1 REV # REV : 역순(내림차순)으로 조회
✅ Sorted Set 점수 증가
# Sorted Set의 Score 증가 (+ 만약 key가 없을 경우 Sorted Set 새로 생성)
# ZINCRBY [key] [increment] [member]
$ ZINCRBY ranking:2026 3 jaeseong
# Sorted Set이 새로 생성됐는 지 확인하기
$ ZRANGE ranking:2026 0 -1 WITHSCORES
# score 2 추가
$ ZINCRBY ranking:2026 2 jaeseong
# score 2가 정상적으로 추가됐는 지 확인하기
$ ZRANGE ranking:2026 0 -1 WITHSCORES