zadd
ZADD
Redis Developer Course | Redis Technical Support | Redis Enterprise Server |
---|
집합에 데이터를 score와 함께 추가
사용법은 zadd key score member 이다.
sadd에서 score가 추가된 형태이다.
score는 반드시 숫자여야 한다. 문자는 입력할 수 없다.
Example
명령> | zadd myzip 60 "경기" |
결과> | 1 |
명령> | zadd myzip 20 "서울" |
결과> | 1 |
명령> | zadd myzip 40 "부산" |
결과> | 1 |
명령> | zrange myzip 0 -1 score 순서로 표시된다 |
결과> |
1) 서울 2) 부산 3) 경기 |
명령> | zrange myzip 0 -1 withscores withscores 옵션을 사용하면 score가 표시된다 |
결과> |
1) 20 -> 서울 2) 40 -> 부산 3) 60 -> 경기 |
score의 정수 범위는 -9007199254740992 -(2^53) 부터 9007199254740992 +(2^53) 이고, 실수 범위는 Double precision floating point number 입니다. |
withscores 옵션을 사용했을때 redis-cli는 value와 score가 각각 다른 line에 표시되는 반면, Redis Web Client는 위 결과와 같이 한 line에 score -> value 형태로 표시된다. |
score member를 여러 개 입력 가능
사용법은 zadd key score member score member 이다.
Example
명령> | zadd myzip 100 "충청"80 "전라" |
결과> | 2 |
명령> | zrange myzip 0 -1 withscores |
결과> |
1) 20 -> 서울 2) 40 -> 부산 3) 60 -> 경기 4) 80 -> 전라 5) 100 -> 충청 |
score가 같으면 member로 sort 됨
Example
명령> | del myzip |
결과> | 1 |
명령> | zadd myzip 10 "충청" 10 "전라" 10 "서울" 10 "경기" 10 "부산" |
결과> | 5 |
명령> | zrange myzip 0 -1 withscores |
결과> |
1) 10 -> 경기 2) 10 -> 부산 3) 10 -> 서울 4) 10 -> 전라 5) 10 -> 충청 |
member의 중복은 허용되지 않으나
score는 update 된다. 하지만 0을 리턴하므로 score도 update하지 않는 것으로 오해할 수 있다.
Example
명령> | zadd myzip 1 "서울" |
결과> | 0 0을 리턴한다 |
명령> | zrange myzip 0 -1 withscores |
결과> |
1) 1 -> 서울 score가 1로 update 되었다 2) 10 -> 경기 3) 10 -> 부산 4) 10 -> 전라 5) 10 -> 충청 |
버전 3.0.2에서 추가된 옵션
- NX: 멤버가 이미 있으면 업데이트하지 않고 없을 경우에만 추가한다.
- XX: 이미 존재하는 멤버에 스코어를 업데이트한다.
- CH: 스코어를 업데이트한 경우에만 업데이트한 멤버수를 리턴한다. 스코어가 같으면 0을 리턴하고, 다르면 업데이트하고 1을 리턴한다. 리턴 값에만 영향을 미치는 옵션이다.
- INCR: 스코어를 주어진 값만큼 증가시킨다.
버전 6.2.0에서 추가된 옵션
- LT: 새 스코어가 현재 스코어 보다 적은 경우에만 기존 요소를 업데이트 합니다.
- GT: 새 스코어가 현재 스코어 보다 큰 경우에만 기존 요소를 업데이트 합니다.
명령문
ZADD key [NX|XX] [GT|LT] [CH] [INCR] score member [score member ...] [ex seconds]
- 이 명령은 version 1.2.0 부터 사용할 수 있습니다.
- 논리적 처리 소요시간은 O(log(N))이다. N은 집합의 member 개수입니다.
- version 2.4 이후 부터 member를 여러 개 입력할 수 있습니다.
- add된 member 개수를 리턴합니다.
- 서브쿼리와 멤버 자동 삭제 기능은 Enterprise 서버에서 사용할 수 있습니다.
SQL Insert | Redis Enterprise 7.3.0 이상이면 INSERT를 사용해보세요. |
관련 명령 | ZRANGE, ZREM, SADD, LPUSH, HSET |
Clients for Java | Jedis, Lettuce, Redisson | Clients for C | Hiredis |
<< SORTED SETS Introduction | ZADD | ZADDS >> |
---|
Email
답글이 올라오면 이메일로 알려드리겠습니다.