Redis Sorted Set
Redis의 Sorted Set(ZSET) 자료구조에 대해 알아보자.
Sorted Set은 저장된 데이터의 정렬된 순서를 가지는 집합 데이터 구조이다. Set 구조이기 때문에 각 멤버(member)에 대해 고유한 식별자(key)와 함께 점수(score)를 지정하여 데이터를 저장한다.
아래 그림을 보면 구조를 파악하기 쉽다. key안에 고유한 member가 존재하고 각 member에 대한 점수가 있다.
만일 동일한 점수가 존재할 경우 member의 사전순으로 정렬을 한다.
Sorted Set 특징
- 정렬된 순서: Sorted Set의 멤버는 각 멤버의 점수를 기준으로 오름차순에 따라 정렬되어 저장된다
- 고유한 멤버: Sorted Set은 각 멤버를 식별자로 구분할 수 있어 중복되지 않는 고유한 멤버들로 구성되어 동일한 멤버를 중복 저장할 수 없다.
- 멤버의 점수: Sorted Set의 각 멤버는 순위 또는 점수를 가지고 있는데, 이 점수를 사용하여 멤버들을 정렬하고 순위를 나타낼 수 있다. 만일 동일한 점수의 멤버가 저장될 시 멤버의 사전순으로 정렬한다.
- 범위 조회: Sorted Set에서는 멤버들은 순위에 따라 정렬되어 저장되므로, 특정 순위 범위 내의 멤버들을 조회하거나, 특정 멤버의 순위를 확인할 수 있다.
Sorted Set 자료구조를 사용하면 좋은 경우
Sorted Set의 특징을 고려했을 때 Sorted Set 자료구조는 순위가 필요한 랭킹을 구현할 때 가장 적합하다고 생각이 된다.
따로 정렬을 하는 작업을 해주지 않아도 각 멤버에 대해 점수가 부여되어 점수에 따라 정렬되기 때문에 자동으로 순위가 정해지기 때문에 편리하고 Redis의 In-Memory 기반의 db라는 점을 고려했을 때 순위 데이터를 가져오는데 특화되어 있다고 생각한다.
Sorted Set 명령어
ZRANGE
ZRANGE 명령어는 sorted set에서 지정된 범위의 데이터를 조회하는 데 사용된다. 순위 범위를 지정하여 해당 범위 안의 데이터를 가져올 수 있다.
선택 옵션인 WITHSCORES 명령어 까지 같이 입력해 주면 해당 멤버의 점수도 같이 출력된다.
ZRANGE key start stop [WITHSCORES]
ZRANK
ZRANK 명령어는 지정된 멤버의 순위를 가져오는 데 사용된다. 순위는 가장 낮은 값이 0부터 시작한다.
ZRANK key member
ZSCORE
ZSCORE 명령어는 지정된 멤버의 점수를 가져오는 데 사용된다.
ZSCORE key member
ZRANGEBYSCORE
ZRANGEBYSCORE 명령어는 지정된 점수 범위(min, max) 내의 데이터를 조회하는 데 사용한다.
WITHSCORES와 LIMITE offset count은 선택옵션으로 WITHSCORES는 점수도 같이 표시하는 명령어
LIMITE offset count은 범위내의 일치하는 요소를 가져오는 데 사용할 수 있다. SQL의 SELECT LIMIT 명령어와 비슷하다고 생각하면 편하다.
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
Reference
https://redis.io/docs/data-types/sorted-sets/
'성장이야기 > TIL' 카테고리의 다른 글
AWS EKS “instances failed to join the kubernetes cluster” Error (0) | 2024.03.12 |
---|---|
EKS ERROR couldn't get current server API group list: the server has asked for the client to provide credentials (0) | 2024.03.11 |
[개발일지] 230706 Java BiFunction 인터페이스 (0) | 2023.07.06 |
[개발일지] 230704 no main manifest attribute error (With Manifest, jar) (0) | 2023.07.04 |
[개발일지] 230630 Spring WebClient (Mono) (0) | 2023.06.30 |