ZADD

레디스 개발자 교육 신청 레디스 정기점검/기술지원
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 -> 경기

애니메이션 보기

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 -> 충청

애니메이션 보기


Subquery(서브쿼리) 기능

Member(멤버) 부분에 서브쿼리를 사용해서 값을 넣을 수 있습니다.
서브쿼리로 사용할 수 있는 명령은 GET, MGET, LPOP, RPOP, LRANGE, SMEMBERS, SUNION, SINTER, SDIFF, ZRANGE, ZREVRANGE, HGET, HMGET, HKEYS, HVALS, HGETALL 입니다.
대부분의 경우 스코어는 0이 들어간다. 그러면 멤버로 소트된다.

Example

명령>set key Hello
결과>OK
명령>zadd zset1 (get key)
결과>1
명령>zrange zset1 0 -1 withscores
결과>1) "Hello"
2) "0"

  • 서브쿼리에 다양한 명령을 사용해서 여러 개 값을 넣을 수 있습니다.
  • Example

    명령>zadd zset1 (lrange mylist2 0 -1)
    결과>8
    명령>zadd zset1 (sunion myset1 myset2)
    결과>7
    명령>zadd zset1 (zrange myzset1 0 -1)
    결과>6
    명령>zadd zset1 (zrange myzset2 0 -1 withscores)
    결과>6
    명령>zadd zset1 (hmget myhash1 field1 field2)
    결과>2

  • 서브쿼리는 하나만 사용할 수 있습니다.
  • 서브쿼리 기능은 Enterprise 서버에서 사용 가능합니다.

    버전 3.0.2에서 추가된 옵션

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


    명령문

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

    • 이 명령은 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 답글이 올라오면 이메일로 알려드리겠습니다.