Redis Sorted sets
Sorted set은 Set, Hash와 비슷하다. 셋처럼 unique 하고, non-repeating string 원소들이다. set에서는 정렬되어 있지 않지만 sorted set에서는 모든 원소는 부동소수점 값에 연관되어 정렬되어 있다(모든 원소들이 어떤 값으로 매핑되어 있기 때문에 Hash와도 비슷하다).
원소들은 순서를 가지고 있고 그 순서를 정하는 규칙은
1. A와 B가 서로 다른 score를 가지고 있을때 A.score > B.score이면 A > B이다.
2. A와 B가 같은 score를 갖고 있을 때 사전 순서에 따라 먼저나오는것 > 나중에 나오는 것 순서로 정해진다. sorted set에서 각 원소들은 unique 하기 때문에 A와 B는 같을 수 없다.
ZADD는 SADD와 비슷하지만 score를 위한 argument를 1개 더 입력받는다. 또한 여러개의 score-value 쌍을 한번에 추가할 수 있다.
Sorted sets are implemented via a dual-ported data structure containing both a skip list and a hash table, so every time we add an element Redis performs an O(log(N)) operation.
역순으로 출력하려면 ZREVRANGE를 사용한다.
withscores 옵션으로 score도 확인할 수 있다.
ZRANGESCORE 명령어로 score 범위를 정해 원하는 구간만 검색할 수 있다.
ZREMRANGEBYSCORE 명령어로 score 범위 안의 원소들을 삭제할 수 있다.
ZRANK 명령어를 사용해 해당 멤버가 sorted set 안의 몇번째 순위인지 알 수 있다.
또한 ZREVRANK를 사용해 역순위를 알 수 있다.
사전적 score
만약 원소들의 점수가 같다면 ZRANGEBYLEX, ZREVRANGEBYLEX, ZREMRANGEBYLEX, ZLEXCOUNT를 통해 원소들을 사전순서로 접근할 수 있다.
일반적인 ZRANGE의 경우
ZRANGEBYLEX 명령어로 원소들을 사전순서로 검색
(검색 조건 등은 나중에 documentation 참고해서 정리)
Redis에서는 big endian 의 128비트 숫자를 사용한다.
Sorted Set의 score는 언제나 변경이 가능하다. ZADD 명령어를 사용해 이미 존재하는 원소의 score를 바꿀 수 있고, O(log(N))의 복잡도를 갖게 된다. (점수를 이용해 랭킹을 표시하는데 사용할 수 있음, #213번째 등등)
'DB > Redis' 카테고리의 다른 글
Redis 외부접속 설정하기 (0) | 2021.01.11 |
---|---|
Redis 기본정리 5 (0) | 2021.01.08 |
Redis 기본 정리3 (0) | 2021.01.08 |
Redis 기본정리 2 (0) | 2021.01.07 |
Redis 기본 정리 (0) | 2021.01.07 |
댓글