zadd
ZADD
Redis 開発者教育 Redis Developer Course |
Redis 定期点検/技術支援 Redis Technical Support |
Redis エンタープライズサーバ 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から 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
返事がかかってなれば、メールでお知らせします。