ZADD

<< SORTED SETS Introduction ZREM >>

집합에 데이터를 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 -> 경기

애니메이션 보기

Note 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에서 추가된 옵션

  • XX: 이미 존재하는 멤버에 스코어를 업데이트한다.
  • NX: 멤버가 이미 있으면 업데이트하지 않고 없을 경우에만 추가한다.
  • CH: 스코어를 업데이트한 경우에도 업데이트한 멤버수를 리턴한다. 리턴 값에만 영향을 미치는 옵션이다.
  • INCR: 스코어를 주어진 값만큼 증가시킨다.



명령문

ZADD key [NX|XX] [CH] [INCR] score member [score member ...]

  • 이 명령은 version 1.2.0 부터 사용할 수 있다.
  • 논리적 처리 소요시간은 O(log(N))이다. N은 집합의 member 개수이다.
  • version 2.4 이후 부터 member를 여러 개 입력할 수 있다.
  • add된 member 개수를 리턴한다.
관련 명령 ZRANGE, ZREM, SADD, LPUSH, HSET
Clients for Java Jedis, Lettuce, Redisson
Clients for C Hiredis

명령을 실습해 보시려면 여기를 클릭해서 Redis Web Client 를 실행하세요.


<< SORTED SETS Introduction ZADD ZREM >>

질문하거나 댓글을 보려면 클릭하세요.  댓글수 :    조회수 :

Email 답글이 올라오면 이메일로 알려드리겠습니다.