ZADD

Redis 開発者教育
Redis Developer Course
Redis 定期点検/技術支援
Redis Technical Support
Redis エンタープライズサーバ
Redis Enterprise Server

集合にデータをscoreと共に追加

使い方は zadd key score memberです。
saddscoreが追加された形です。
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から 9007199254740992です。
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, KEYS 입니다.
대부분의 경우 스코어는 0이 들어갑니다. 그러면 멤버로 소트됩니다.

Example

명령>set key Hello
결과>OK
명령>zadd zset1 (get key)
결과>1
명령>zrange zset1 0 -1 withscores
결과>1) "Hello"
2) "0"
  • 서브쿼리에 다양한 명령을 사용해서 여러 개 값을 넣을 수 있습니다.
  • LIST 또는 SET의 경우 멤버로 소트하고 싶을 경우 사용하면 좋습니다.
  • ZRANGE, ZREVRANGE 명령에 withscores 옵션을 사용하면 스코어를 넣을 수 있습니다.
  • KEYS 명령에 memory 옵션을 사용하면 memory로 소트되어 메모리를 많이 쓰는 키를 확인할 수 있고, len 옵션을 사용하면 멤버수가 많은 혹은 적은 키를 확인할 수 있습니다.

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
명령>zadd zset1 (keys * memory)
결과>2
명령>zadd zset1 (keys * len)
결과>2
명령>zadd zset1 (keys * zset memory)
결과>2

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

    멤버(member) 자동 삭제(만료 시간 설정) 기능

    입력하는 멤버에 만료 시간을 설정해서 자동 삭제할 수 있습니다.
    이것은 기존에 zadd(입력)과 expire를 각각 했던 것을 한 명령으로 만들었습니다.

    Example

    명령>zadd myzset 10 mem10 20 mem20 30 mem30 ex 10
    결과>3
    10초 후
    명령>zrange myzset 0 -1
    결과>(empty list or set)

    서브쿼리에도 사용할 수 있습니다.

    Example

    명령>zadd myzset (get key) ex 10
    결과>1
    명령>zadd myzset (lrange mylist 0 -1) ex 10
    결과>10
    멤버 자동 삭제 기능은 Enterprise 서버에서 사용 가능합니다.

    버전 3.0.2에서 추가된 옵션

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


    コマンド

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

    • このコマンドは、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

    << SORTED SETS Introduction ZADD ZINCRBY >>

    クリック件数 :

    Email 返事がかかってなれば、メールでお知らせします。

    혹시 처음이세요?
    레디스게이트에는 레디스에 대한 많은 정보가 있습니다.
    레디스 소개, 명령어, SQL, 클라이언트, 서버, 센티널, 클러스터 등이 있습니다.
    혹시 필요한 정보를 찾기 어려우시면 redisgate@gmail.com로 메일 주세요.
    제가 찾아서 알려드리겠습니다.
     
    close
    IP를 기반으로 보여집니다.