Computer >> 컴퓨터 >  >> 프로그래밍 >> Redis

Redis ZREMRANGEBYSCORE 완벽 가이드 – 점수 범위로 정렬된 집합 요소 제거하기

이 튜토리얼에서는 Redis의 ZREMRANGEBYSCORE 명령어를 사용하여 정렬된 집합(Sorted Set)에서 특정 점수 범위에 해당하는 요소들을 제거하는 방법을 알아보겠습니다.

ZREMRANGEBYSCORE 명령어란?

ZREMRANGEBYSCORE는 인자로 전달된 min(최솟값) 이상이면서 max(최댓값) 이하인 점수를 가진 모든 요소를 정렬된 집합에서 삭제하는 명령어입니다.

열린 구간(배타적 범위) 지정하기

기본적으로 minmax 인자는 닫힌 구간(경계값 포함)으로 처리됩니다. 하지만 값 앞에 ( 문자를 붙이면 열린 구간(경계값 제외)으로 지정할 수 있습니다.

ZREMRANGEBYSCORE set (1 5

위 명령은 1 < score <= 5 범위의 모든 요소를 제거합니다. 즉, 1은 제외되고 5는 포함됩니다.

ZREMRANGEBYSCORE set (5 (10

반면 위 명령은 5 < score < 10 범위의 요소만 제거합니다. 즉, 5와 10은 모두 제외됩니다.

무한대 값 활용하기

minmax 인자에는 -inf(음의 무한대)와 +inf(양의 무한대)를 사용할 수 있습니다. 이를 활용하면 정렬된 집합 내에서 최고점 또는 최저점이 얼마인지 미리 알 필요가 없습니다.

참고로, 키가 존재하지만 저장된 값의 자료형이 정렬된 집합(Sorted Set)이 아닌 경우에는 에러가 반환됩니다.

명령어 문법

redis host:port> ZREMRANGEBYSCORE <keyname> <min> <max>

반환값

  • (integer) : 실제로 제거된 요소의 개수
  • 0 : 해당 키가 존재하지 않는 경우
  • Error : 키는 존재하지만 저장된 값이 정렬된 집합 자료형이 아닌 경우

사용 예시

아래 예시는 ZREMRANGEBYSCORE 명령어를 실행하여 특정 점수 범위의 요소를 제거하는 과정을 보여줍니다.

Redis ZREMRANGEBYSCORE 완벽 가이드 – 점수 범위로 정렬된 집합 요소 제거하기

정리

지금까지 Redis의 ZREMRANGEBYSCORE 명령어를 사용하여 정렬된 집합에서 특정 점수 범위에 속한 요소들을 제거하는 방법을 살펴보았습니다. 이 명령어는 리더보드 관리, 만료된 항목 정리 등 다양한 상황에서 유용하게 활용할 수 있습니다.

이 글이 도움이 되었다면 댓글로 의견을 남겨주시고, 주변에도 공유해 주세요!