DB/Redis

[Redis] Sorted Sets

jungmin.park 2023. 12. 23. 19:43

Sorted Set

Sorted Set은 관련 점수에 따라 정렬된 고유 문자열(구성원) 모음으로 둘 이상의 문자열에 동일한 점수가 있는 경우 문자열은 사전순으로 정렬됩니다. 
  • 리더보드 정렬된 세트를 사용하면 대규모 온라인 게임에서 가장 높은 점수를 순서대로 나열한 목록을 합계로 유지할 수 있다.
  • 속도 제한기, 특히 과도한 API 요청을 방지하기 위해 정렬된 세트를 사용하여 슬라이딩 윈도우 속도 제한기를 구축할 수 있다.

Sorted Set를 Sets을 Hash의 혼합으로 생각할 수 있다. 집합과 마찬가지로 정렬된 집합은 고유하고 반복되지 않는 문자열 요소를 구성되므로 어떤 의미에서는 정렬된 집합도 집합입니다.

Set은 내부 요소는 순서가 지정되지 않지만 Sorted Se의 모든 요소는 score라는 부동 소수점 값과 연결된다.

 

또한 Sorted Set의 요소는 순서대로 가져온다.

  • B와 A가 score가 다른 두 요소인 경우 A score가 B score보다 크면 A > B이다.
  • B와 A의 점수가 정확히 같은 경우 A 문자열이 B 문자열보다 사전순으로 크면 A > B이다. 정렬된 세트는 고유한 요소만 있으므로 B 및 A 문자열은 동일할 수 없습니다.

대부분 정렬 집합의 연산은 O(log(n))이다. 여기서 n은 멤버 수

 

127.0.0.1:6379> zadd points 10 TeamA 10 TeamB 50 TeamC
(integer) 0
127.0.0.1:6379> zrange points 0 -1
1) "TeamA"
2) "TeamB"
3) "TeamC"
127.0.0.1:6379> zrange points 0 -1 rev withscores
1) "TeamC"
2) "50"
3) "TeamB"
4) "10"
5) "TeamA"
6) "10"