이 튜토리얼에서는 Redis의 ZRANGEBYLEX 명령어를 사용하여 정렬된 집합(Sorted Set) 값 중 특정 범위에 속하는 모든 요소를 사전순(lexicographical) 오름차순으로 조회하는 방법을 알아봅니다.
ZRANGEBYLEX 명령어란?
ZRANGEBYLEX 명령어는 지정된 키에 저장된 정렬된 집합 값에서 min과 max 인수로 주어진 범위(요소의 문자열 표현 기준)에 해당하는 모든 요소를 반환합니다. 이 명령어가 올바르게 동작하려면 집합의 모든 요소가 동일한 점수(score)로 저장되어 있어야 사전순 정렬이 강제됩니다. 반환되는 요소들은 항상 사전순 오름차순으로 정렬됩니다.
구간 지정 문법 이해하기
min과 max 인수는 반드시 ( 또는 [로 시작해야 합니다. [는 닫힌 구간(경계값 포함)을 의미하고, (는 열린 구간(경계값 제외)을 의미합니다.
ZRANGEBYLEX set [a [f
위 명령은 a <= element <= f 조건을 만족하는 모든 요소를 반환합니다.
ZRANGEBYLEX set [a (f
반면 위 명령은 a <= element < f 조건을 만족하는 요소들, 즉 f는 제외하고 반환합니다.
무한대 값 사용하기
min과 max 인수에는 + 또는 -라는 특수 값을 사용할 수 있습니다. +는 양의 무한대 문자열을, -는 음의 무한대 문자열을 나타냅니다. 따라서 ZRANGEBYLEX set - + 명령을 실행하면 해당 정렬된 집합의 모든 요소가 반환됩니다.
LIMIT 옵션으로 결과 개수 제한하기
선택적인 LIMIT 인수를 사용하면 offset 위치부터 count개의 일치하는 요소만 가져올 수 있습니다. 만약 count 값이 음수라면 offset 위치부터 끝까지의 모든 요소가 반환됩니다.
ZRANGEBYLEX set [a [f LIMIT 1 3 -- set = [a, b, c, d, e, f, g, h] 인 경우
위 명령은 두 번째 일치 요소부터 세 개의 요소를 반환합니다. 즉, 결과는 [b, c, d]입니다.
키가 존재하지 않으면 빈 집합(empty set)이 반환되며, 키는 존재하지만 저장된 값이 정렬된 집합 타입이 아닐 경우에는 에러가 반환됩니다.
문법
redis host:post> ZRANGEBYLEX <keyname> <min> <max> [LIMIT offset count]
반환값
- (array) reply : 지정된 범위 내 정렬된 집합의 요소 목록 - Empty Set : 키가 존재하지 않는 경우 - Error : 키는 존재하지만 값이 정렬된 집합 타입이 아닌 경우
예제

참고 자료
- ZRANGEBYLEX 공식 문서 (Redis Docs)
지금까지 Redis ZRANGEBYLEX 명령어를 활용해 정렬된 집합에서 특정 범위의 요소를 사전순 오름차순으로 조회하는 방법을 살펴보았습니다. 이 글이 도움이 되었다면 댓글로 의견을 남겨주시고, 주변에도 널리 공유해 주세요!