이 튜토리얼에서는 Redis의 ZREVRANGEBYSCORE 명령어를 사용하여, 정렬된 집합(sorted set)에서 특정 점수 범위에 속한 모든 요소를 점수 기준 내림차순으로 조회하는 방법을 알아보겠습니다.
ZREVRANGEBYSCORE 명령어란?
ZREVRANGEBYSCORE는 인자로 전달된 max(최대값) 이하이면서 min(최소값) 이상인 점수를 가진 모든 요소를 반환합니다. 이때 요소들은 점수 기준으로 내림차순 정렬되며, 점수가 동일한 요소들끼리는 사전 순(lexicographical order) 역순으로 배치됩니다.
기본적으로 max와 min은 닫힌 구간(포함)으로 처리됩니다. 하지만 값 앞에 ( 문자를 붙이면 열린 구간(제외)으로 지정할 수도 있습니다.
예를 들어 다음 명령어는:
ZREVRANGEBYSCORE set (5 1
점수가 5보다 작고 1 이상인 모든 요소를 반환합니다. 반면 아래 명령어는:
ZREVRANGEBYSCORE zset (10 (5
점수가 10보다 작고 5보다 큰 요소들, 즉 5와 10을 제외한 범위의 요소들을 반환합니다.
또한 max와 min 인자에는 +inf(양의 무한대)와 -inf(음의 무한대)를 사용할 수 있습니다. 덕분에 집합 내 최고 점수나 최저 점수를 미리 알지 못해도, 특정 점수부터 끝까지 또는 처음부터 특정 점수까지의 모든 요소를 손쉽게 조회할 수 있습니다.
선택적 인자(Optional Arguments)
Redis ZREVRANGEBYSCORE 명령어는 다음과 같은 선택적 인자를 지원합니다.
- WITHSCORES : 요소와 함께 해당 요소의 점수도 함께 반환합니다. 이 옵션을 사용하면 반환되는 배열이 value1, score1, ... valueN, scoreN 형태가 됩니다.
- LIMIT : offset 위치부터 시작하여 일치하는 요소 count개만큼 반환합니다. 만약 count 값이 음수라면, offset 위치부터 나머지 모든 요소가 반환됩니다.
키가 존재하지 않으면 빈 집합(empty set)이 반환되고, 키는 존재하지만 저장된 값이 정렬된 집합(sorted set) 타입이 아닌 경우에는 에러가 반환됩니다.
기본 문법(Syntax)
redis host:port> ZREVRANGEBYSCORE <keyname> <max> <min> [WITHSCORES] [LIMIT offset count]
반환값(Output)
- (array): 지정된 범위 내 정렬된 집합의 요소들을 담은 배열 - 빈 집합(empty set): 키가 존재하지 않는 경우 - 에러(error): 키는 존재하지만 저장된 값이 정렬된 집합 타입이 아닌 경우
사용 예제(Example)

참고 자료(References)
- Redis 공식 문서 – ZREVRANGEBYSCORE Command Docs
지금까지 Redis 데이터 저장소에서 특정 점수 범위에 속한 정렬된 집합의 요소들을 내림차순으로 조회하는 방법을 살펴보았습니다. 이 글이 도움이 되었다면 댓글로 의견을 남겨주시고, 주변에도 공유해 주세요!