Sorted Set (ZSet) 이란?
Set의 특성을 그대로 가지면서 추가적으로 저장된 Value(Member)들의 순서도 관리해줍니다.
순서를 위해 value(member)에 대해 score를 필요에 맞게 설정할 수 있으며, score를 기반으로 정렬됩니다.
Sorted Set 구조
Sorted Set 명령어
1. ZADD
ZADD key scroe member
zadd는 key와 score member를 통해 값을 추가 및 변경 하는 명령어입니다.
zset에 각 과일의 이름과 가격 데이터를 추가합니다.
과일 데이터를 저장할 zset의 key는 fruit라고 정하였고 key의 각 value(member)를 apple, banana, melone, pineapple, peach라고 정하였습니다.
- 1개씩 추가하는 경우
```
127.0.0.1:6379> zadd fruit 10 apple
(integer) 1
127.0.0.1:6379> zadd fruit 15 pineapple
(integer) 1
- 여러개를 한번에 추가하는 경우
127.0.0.1:6379> zadd fruit 12 melon 25 banana 7 peach
(integer) 3
이미 존재하는 member 값을 zadd로 변경하는 경우 해당 scroe로 변경됩니다.
ex) zadd fruit 10 apple 이라는 명령어로 apple의 score를 10으로 지정한 다음
zadd fruit 100 apple 이라는 명령어를 입력한다면 apple의 score는 100으로 변경됩니다.
#### 2. ZSCORE
`zscore key member`
member의 score를 얻고자 할 때 사용하는 명령어 입니다.
apple의 가격은 아래와 같이 조회하면 score의 값이 출력됩니다.
127.0.0.1:6379> zscore fruit apple
"10"
#### 3. ZRANK
`zrank key member`
member의 순위를 얻고자 할 때 사용하는 명령어 입니다.
이때, score는 낮은 순서를 기준으로 합니다.
아래 명령어를 통해 peach라는 member의 score가 가장 낮아 0순위인것을 알 수 있습니다.
127.0.0.1:6379> zrank fruit peach
(integer) 0
#### 4. zrange
`zrange key start stop`
zrange에서 start, stop에는 정렬된 원소들 중에서 내가 출력하고 싶은 원소의 시작 위치와 마지막 위치를 입력하면 됩니다.
한가지 유념해야 할 점은 첫 번째 원소를 0이라 했을 때의 상대적인 위치값입니다.
예를 들어, 첫 번째 원소 값이 0인 경우 마지막 원소값을 -1로 표현할 수 있습니다.
아래 명령어를 통해 fruit의 key에 대한 member들의 score가 낮은 순서부터 차례대로 출력되도록 합니다.
127.0.0.1:6379> zrange fruit 0 -1
1) "peach"
2) "apple"
3) "melon"
4) "pineapple"
5) "banana"
127.0.0.1:6379> zrange fruit 0 4
1) "peach"
2) "apple"
3) "melon"
4) "pineapple"
5) "banana"
다음 명령어를 통해 score가 낮은 2번째부터 3번째 까지를 출력할 수 있습니다.
127.0.0.1:6379> zrange fruit 1 2
1) "apple"
2) "melon"
만약, 가격도 같이 출력하고 싶다면, `WITHSCORES` 옵션을 추가하면 됩니다.
127.0.0.1:6379> zrange fruit 0 -1 withscores
1) "peach"
2) "7"
3) "apple"
4) "10"
5) "melon"
6) "12"
7) "pineapple"
8) "15"
9) "banana"
10) "25"
가격이 높은 순서대로 출력하고 싶다면, `zrange` 대신 `zrevrange` 명령어를 사용하면 됩니다.
127.0.0.1:6379> zrevrange fruit 0 -1 withscores
1) "banana"
2) "25"
3) "pineapple"
4) "15"
5) "melon"
6) "12"
7) "apple"
8) "10"
9) "peach"
10) "7"
#### 5. ZRANGEBYSCORE
`ZRANGEBYSCORE key min max`
해당 key의 score 값의 범위를 이용하여 조회하는 명령어입니다.
아래 명령어는 score가 5이상 10이하인 member들을 조회하는 명령어입니다.
127.0.0.1:6379> zrangebyscore fruit 5 10
1) "peach"
2) "apple"
#### 6. ZREM
`zrem key member`
해당 key의 member를 삭제할 때 사용하는 명령어입니다.
zrem을 이용하여 단수, 복수개의 member를 삭제할 수 있습니다.
127.0.0.1:6379> zrem fruit apple
(integer) 1
127.0.0.1:6379> zrem fruit pineapple peach
(integer) 2
127.0.0.1:6379> zrange fruit 0 -1
1) "melon"
2) "banana"
```
'개발 > 대용량트래픽' 카테고리의 다른 글
Hexagonal Architecture 완전 가이드: Ports와 Adapters로 구현하기 (0) | 2024.01.25 |
---|---|
Redis Cluster: 고성능과 고가용성을 위한 데이터 분산 전략 (1) | 2024.01.25 |
Redis와 Gossip 프로토콜: 빠른 네트워크 상태 동기화 기술 (0) | 2024.01.25 |
Redis Sentinel의 이해: 고가용성을 위한 모니터링 및 장애 조치 전략 (1) | 2024.01.25 |
싱글 스레드의 이해와 Redis의 고급 관리 전략 (1) | 2024.01.25 |
댓글