이 튜토리얼에서는 정렬된 집합(sorted set) 값에서 특정 범위에 속하는 요소들을 제거하는 방법을 알아봅니다. 이를 위해 Redis의 ZREMRANGEBYLEX 명령어를 사용합니다.
ZREMRANGEBYLEX 명령어란?
ZREMRANGEBYLEX 명령어는 정렬된 집합 값 중에서 min과 max 인자로 지정한 범위 사이에 있는 값(요소의 문자열 표현)을 가진 모든 요소를 제거합니다. 참고로, 사전순(lexicographical) 정렬이 적용되도록 정렬된 집합의 모든 요소는 동일한 점수(score)로 삽입되어 있어야 합니다.
min과 max 인자는 반드시 ( 또는 [로 시작해야 합니다. [는 닫힌 구간(해당 값 포함)을 의미하고, (는 열린 구간(해당 값 제외)을 의미합니다.
예를 들어 다음 명령어는 a <= 요소 <= f 조건을 만족하는 모든 요소를 제거합니다.
ZREMRANGEBYLEX set [a [f
반면 아래 명령어는 a <= 요소 < f 조건을 만족하는 모든 요소를 제거합니다.
ZREMRANGEBYLEX set [a (f
또한 min과 max 인자에는 + 또는 -라는 특수 값을 사용할 수 있습니다. +는 양의 무한대 문자열을, -는 음의 무한대 문자열을 나타냅니다. 따라서 ZREMRANGEBYLEX set - + 명령어를 실행하면 해당 정렬된 집합의 모든 요소가 제거됩니다.
키가 존재하지 않으면 빈 집합(empty set)이 반환되며, 키는 존재하지만 저장된 값이 정렬된 집합 타입이 아닐 경우에는 에러가 반환됩니다.
구문
redis host:post> ZREMRANGEBYLEX <keyname> <min> <max>
반환값
- (array) reply : 제거된 요소의 개수를 나타냅니다.
- Empty Set : 키가 존재하지 않는 경우 반환됩니다.
- Error : 키는 존재하지만 저장된 값이 정렬된 집합이 아닌 경우 반환됩니다.
예제

참고 자료
- ZREMRANGEBYLEX 공식 문서(Redis Docs)
지금까지 Redis ZREMRANGEBYLEX 명령어를 사용하여 정렬된 집합에서 특정 범위의 값을 가진 요소들을 제거하는 방법을 살펴보았습니다. 이 글이 도움이 되었다면 댓글로 의견을 남겨주시고, 주변에도 공유해 주세요!