반응형
Redis 정렬 세트
Redis 정렬 집합 소개
Redis 정렬 세트는 연관된 점수로 정렬된 고유한 문자열(구성원) 모음입니다. 둘 이상의 문자열에 동일한 점수가 있는 경우 문자열은 사전순으로 정렬됩니다. 정렬된 세트의 일부 사용 사례는 다음과 같습니다.
- 리더보드. 예를 들어, 정렬된 세트를 사용하여 대규모 온라인 게임에서 가장 높은 점수의 정렬된 목록을 쉽게 유지할 수 있습니다.
- 속도 제한기. 특히 정렬된 세트를 사용하여 슬라이딩 윈도우 속도 제한기를 구축하여 과도한 API 요청을 방지할 수 있습니다.
예
- 플레이어의 점수가 변경되면 실시간 순위표 업데이트:
> ZADD leaderboard:455 100 user:1
(integer) 1
> ZADD leaderboard:455 75 user:2
(integer) 1
> ZADD leaderboard:455 101 user:3
(integer) 1
> ZADD leaderboard:455 15 user:4
(integer) 1
> ZADD leaderboard:455 275 user:2
(integer) 0
의 점수 user:2는 최종 ZADD호출에서 업데이트됩니다.
- 상위 3명의 플레이어 점수 얻기:
> ZRANGE leaderboard:455 0 2 REV WITHSCORES
1) "user:2"
2) "275"
3) "user:3"
4) "101"
5) "user:1"
6) "100"
- 사용자 2의 순위는 무엇입니까?
> ZREVRANK leaderboard:455 user:2
(integer) 0
기본 명령
- ZADD정렬된 집합에 새 구성원 및 관련 점수를 추가합니다. 구성원이 이미 있는 경우 점수가 업데이트됩니다.
- ZRANGE지정된 범위 내에서 정렬된 정렬된 집합의 구성원을 반환합니다.
- ZRANK정렬이 오름차순이라고 가정하고 제공된 멤버의 순위를 반환합니다.
- ZREVRANK정렬된 집합이 내림차순이라고 가정하고 제공된 멤버의 순위를 반환합니다.
정렬된 집합 명령의 전체 목록을 참조하십시오 .
성능
대부분의 정렬된 집합 연산은 O(log(n))이며, 여기서 n 은 구성원 수입니다.
ZRANGE큰 반환 값(예: 수만 개 이상)으로 명령을 실행할 때는 약간의 주의를 기울이 십시오. 이 명령의 시간 복잡도는 O(log(n) + m)이며, 여기서 m 은 반환된 결과의 수입니다.
대안
Redis 정렬 세트는 때때로 다른 Redis 데이터 구조를 인덱싱하는 데 사용됩니다. 데이터를 인덱싱하고 쿼리해야 하는 경우 RediSearch 및 RedisJSON 을 고려하세요 .
더 알아보기
- Redis Sorted Sets Explained 는 Redis의 정렬된 집합에 대한 재미있는 소개입니다.
- Redis University의 RU101 은 Redis 정렬 집합을 자세히 살펴봅니다.
참고(번역) : https://redis.io/docs/data-types/sorted-sets/
반응형
'Database > NoSQL' 카테고리의 다른 글
[mongoDB] centos7 몽고DB 설치 (0) | 2022.10.12 |
---|---|
[redis] 레디스 데이터타입 - hashes(해시) (0) | 2022.10.06 |
[redis] 레디스 데이터 타입 - Sets (0) | 2022.10.06 |
[redis] 레디스 데이터 타입 - Strings(문자열) (0) | 2022.10.06 |
[redis] centos7 레디스 설치 및 설정 (0) | 2022.09.20 |