이 튜토리얼에서는 Redis ZREVRANGE 명령어를 사용하여 정렬된 세트(sorted set)에서 특정 순위 범위에 해당하는 하나 이상의 요소를 점수 기준 내림차순으로 가져오는 방법을 알아봅니다.
ZREVRANGE 명령어란?
ZREVRANGE 명령어는 지정된 키에 저장된 정렬된 세트 값에서 주어진 범위에 속하는 하나 이상의 요소를 반환합니다. 정렬된 세트의 요소들은 점수를 기준으로 내림차순으로 정렬되며, 점수가 동일한 요소들은 사전순(lexicographical order)으로 내림차순 정렬됩니다.
범위는 start(포함)와 end(포함) 오프셋으로 정의됩니다. 이 오프셋은 0부터 시작하는 인덱스로, 0은 첫 번째 요소, 1은 두 번째 요소를 의미하며 이후 순차적으로 증가합니다. 음수 값도 사용할 수 있는데, 이 경우 세트의 끝에서부터 역산됩니다. 즉, -1은 마지막 요소, -2는 뒤에서 두 번째 요소를 의미합니다.
범위를 벗어나는 오프셋은 다음과 같이 처리됩니다.
- start > end 또는 start > 정렬된 세트의 크기인 경우: 빈 리스트가 반환됩니다.
- end > 정렬된 세트의 크기인 경우: end 오프셋이 정렬된 세트의 마지막 요소 인덱스로 자동 조정됩니다.
키가 존재하지 않으면 빈 세트(empty set)가 반환되고, 키는 존재하지만 저장된 값이 정렬된 세트 타입이 아니라면 에러가 반환됩니다.
또한 WITHSCORES(선택 사항) 인자를 명령어에 함께 전달하면 요소와 해당 요소의 점수를 한꺼번에 받을 수 있습니다. 이 경우 반환되는 배열은 value1, ..., valueN 형태가 아닌 value1, score1, ..., valueN, scoreN 형태로 구성됩니다.
문법(Syntax)
Redis ZREVRANGE 명령어의 기본 문법은 다음과 같습니다.
redis host:post> ZREVRANGE <keyname> <start> <stop> [WITHSCORES]
반환값(Output)
- (array) reply: 지정된 범위에 속하는 정렬된 세트의 요소 목록 - Empty Set: 키가 존재하지 않는 경우 - Error: 키는 존재하지만 저장된 값이 정렬된 세트 타입이 아닌 경우
예제(Example)

참고 자료(References)
- ZREVRANGE 공식 문서(Redis 공식 Docs)
지금까지 Redis ZREVRANGE 명령어를 활용하여 정렬된 세트에서 특정 순위 범위에 해당하는 요소를 점수 기준 내림차순으로 조회하는 방법을 살펴보았습니다. 내용이 유용했다면 댓글로 의견을 남겨주시고, 필요한 분들에게 널리 공유해 주세요!