# ZSet Commands

# zadd

  • 支持:是

  • 说明:用于将一个或多个成员添加到有序集合中,或者更新已存在成员的 score 值

  • 示例:

    ZADD key [NX | XX] [GT | LT] [CH] [INCR] score member [score member
      ...]
    Top of Form
    > ZADD myzset 1 "one"
    (integer) 1
    > ZADD myzset 1 "uno"
    (integer) 1
    > ZADD myzset 2 "two" 3 "three"
    (integer) 2
    > ZRANGE myzset 0 -1 WITHSCORES
    1) "one"
    2) "1"
    3) "uno"
    4) "1"
    5) "two"
    6) "2"
    7) "three"
    8) "3"
    

# zcard

  • 支持:是

  • 说明:当key存在且是有序集类型时,返回有序集的基数(元素个数)。当key不存在时,返回0

  • 示例:

    > ZADD myzset 1 "one"
    (integer) 1
    > ZADD myzset 2 "two"
    (integer) 1
    > ZCARD myzset
    (integer) 2
    

# zcount

  • 支持:是

  • 说明:用于统计有序集合中指定 score 值范围内的元素个数

  • 示例:

    > ZADD myzset 1 "one"
    (integer) 1
    > ZADD myzset 2 "two"
    (integer) 1
    > ZADD myzset 3 "three"
    (integer) 1
    > ZCOUNT myzset -inf +inf
    (integer) 3
    > ZCOUNT myzset (1 3
    (integer) 2
    

# zincrby

  • 支持:是

  • 说明:为有序集key的成员member的score值加上增量increment

  • 示例:

    > ZADD myzset 1 "one"
    (integer) 1
    > ZADD myzset 2 "two"
    (integer) 1
    > ZINCRBY myzset 2 "one"
    "3"
    > ZRANGE myzset 0 -1 WITHSCORES
    1) "two"
    2) "2"
    3) "one"
    4) "3"
    

# zinterstore

  • 支持:是

  • 说明:求两个或者多个有序集合的交集,并将所得结果存储在新的 key 中

  • 示例:

    > ZADD zset1 1 "one"
    (integer) 1
    > ZADD zset1 2 "two"
    (integer) 1
    > ZADD zset2 1 "one"
    (integer) 1
    > ZADD zset2 2 "two"
    (integer) 1
    > ZADD zset2 3 "three"
    (integer) 1
    > ZINTERSTORE out 2 zset1 zset2 WEIGHTS 2 3
    (integer) 2
    > ZRANGE out 0 -1 WITHSCORES
    1) "one"
    2) "5"
    3) "two"
    4) "10"
    

# zlexcount

  • 支持:是

  • 说明:返回指定范围内的元素数量,ZLEXCOUNT key min max会返回成员介于min和max范围内的元素数量

  • 示例:

    > ZADD myzset 0 a 0 b 0 c 0 d 0 e
    (integer) 5
    > ZADD myzset 0 f 0 g
    (integer) 2
    > ZLEXCOUNT myzset - +
    (integer) 7
    > ZLEXCOUNT myzset [b [f
    (integer) 5
    

# zpopmin

  • 支持:是

  • 说明:弹出分值最低的count个成员, 回被弹出元素的成员和分值

  • 示例:

    > ZADD myzset 1 "one"
    (integer) 1
    > ZADD myzset 2 "two"
    (integer) 1
    > ZADD myzset 3 "three"
    (integer) 1
    > ZPOPMIN myzset
    1) "one"
    2) "1"
    

# zpopmax

  • 支持:是

  • 说明:弹出分值最高的count个成员, 回被弹出元素的成员和分值

  • 示例:

    > ZADD myzset 1 "one"
    (integer) 1
    > ZADD myzset 2 "two"
    (integer) 1
    > ZADD myzset 3 "three"
    (integer) 1
    > ZPOPMAX myzset
    1) "three"
    2) "3"
    

# zrange

  • 支持:是

  • 说明:返回有序集合中指定索引区间内的成员数量

  • 示例:

    > ZADD myzset 1 "one" 2 "two" 3 "three"
    (integer) 3
    > ZRANGE myzset 0 -1
    1) "one"
    2) "two"
    3) "three"
    > ZRANGE myzset 2 3
    1) "three"
    > ZRANGE myzset -2 -1
    1) "two"
    2) "three"
    > ZRANGE myzset 0 1 WITHSCORES
    1) "one"
    2) "1"
    3) "two"
    4) "2"
    > ZRANGE myzset (1 +inf BYSCORE LIMIT 1 1
    (error) ERR value is not an integer or out of range
    

# zrangebylex

  • 支持:是

  • 说明:返回按字典序来进行排序有序集中指定字典区间内的成员数量

  • 示例:

    > ZADD myzset 0 a 0 b 0 c 0 d 0 e 0 f 0 g
    (integer) 7
    > ZRANGEBYLEX myzset - [c
    1) "a"
    2) "b"
    3) "c"
    > ZRANGEBYLEX myzset - (c
    1) "a"
    2) "b"
    > ZRANGEBYLEX myzset [aaa (g
    1) "b"
    2) "c"
    3) "d"
    4) "e"
    5) "f"
    # 以(或[开始,指定范围项分别是不包含的还是包含的
    

# zrangebyscore

  • 支持:是

  • 说明:返回有序集合中指定score区间内的成员

  • 示例:

    > ZADD myzset 1 "one"
    (integer) 1
    > ZADD myzset 2 "two"
    (integer) 1
    > ZADD myzset 3 "three"
    (integer) 1
    > ZRANGEBYSCORE myzset -inf +inf
    1) "one"
    2) "two"
    3) "three"
    > ZRANGEBYSCORE myzset 1 2
    1) "one"
    2) "two"
    > ZRANGEBYSCORE myzset (1 2
    1) "two"
    > ZRANGEBYSCORE myzset (1 (2
    

# zrank

  • 支持:是

  • 说明:返回有序集合中指定成员的排名

  • 示例:

    > ZADD myzset 1 "one"
    (integer) 1
    > ZADD myzset 2 "two"
    (integer) 1
    > ZADD myzset 3 "three"
    (integer) 1
    > ZRANK myzset "three"
    (integer) 2
    > ZRANK myzset "four"
    (nil)
    > ZRANK myzset "three" WITHSCORE
    (error) ERR wrong number of arguments for command
    > ZRANK myzset "four" WITHSCORE
    

# zrem

  • 支持:是

  • 说明:移除有序集合中的一个或多个成员

  • 示例:

    > ZADD myzset 1 "one"
    (integer) 1
    > ZADD myzset 2 "two"
    (integer) 1
    > ZADD myzset 3 "three"
    (integer) 1
    > ZREM myzset "two"
    (integer) 1
    > ZRANGE myzset 0 -1 WITHSCORES
    1) "one"
    2) "1"
    3) "three"
    4) "3"
    

# zremrangebylex

  • 支持:是

  • 说明:移除有序集合中指定长度区间内的所有成员

  • 示例:

    > ZADD myzset 0 aaaa 0 b 0 c 0 d 0 e
    (integer) 5
    > ZADD myzset 0 foo 0 zap 0 zip 0 ALPHA 0 alpha
    (integer) 5
    > ZRANGE myzset 0 -1
    1) "ALPHA"
    2) "aaaa"
    3) "alpha"
    4) "b"
    5) "c"
    6) "d"
    7) "e"
    8) "foo"
    9) "zap"
    10) "zip"
    > ZREMRANGEBYLEX myzset [alpha [omega
    (integer) 6
    > ZRANGE myzset 0 -1
    1) "ALPHA"
    2) "aaaa"
    3) "zap"
    4) "zip"
    

# zremrangebyrank

  • 支持:是

  • 说明:移除有序集合中指定排名区间内的所有成员

  • 示例:

    > ZADD myzset 1 "one"
    (integer) 1
    > ZADD myzset 2 "two"
    (integer) 1
    > ZADD myzset 3 "three"
    (integer) 1
    > ZREMRANGEBYRANK myzset 0 1
    (integer) 2
    > ZRANGE myzset 0 -1 WITHSCORES
    1) "three"
    2) "3"
    

# zremrangebyscore

  • 支持:是

  • 说明:移除有序集合中指定分数区间内的所有成员

  • 示例:

    > ZADD myzset 1 "one"
    (integer) 1
    > ZADD myzset 2 "two"
    (integer) 1
    > ZADD myzset 3 "three"
    (integer) 1
    > ZREMRANGEBYSCORE myzset -inf (2
    (integer) 1
    > ZRANGE myzset 0 -1 WITHSCORES
    1) "two"
    2) "2"
    3) "three"
    4) "3"
    

# zrevrange

  • 支持:是

  • 说明:返回有序集中指定区间内的成员,成员按score递减的次序排列

  • 示例:

    > ZADD myzset 1 "one"
    (integer) 1
    > ZADD myzset 2 "two"
    (integer) 1
    > ZADD myzset 3 "three"
    (integer) 1
    > ZREVRANGE myzset 0 -1
    1) "three"
    2) "two"
    3) "one"
    > ZREVRANGE myzset 2 3
    1) "one"
    > ZREVRANGE myzset -2 -1
    1) "two"
    2) "one"
    

# zrevrangebylex

  • 支持:是

  • 说明:返回给定的按字典序来进行排序集合键key中,值介于min和max之间的成员

  • 示例:

    > ZADD myzset 0 a 0 b 0 c 0 d 0 e 0 f 0 g
    (integer) 7
    > ZREVRANGEBYLEX myzset [c -
    1) "c"
    2) "b"
    3) "a"
    > ZREVRANGEBYLEX myzset (c -
    1) "b"
    2) "a"
    > ZREVRANGEBYLEX myzset (g [aaa
    1) "f"
    2) "e"
    3) "d"
    4) "c"
    5) "b"
    

# zrevrangebyscore

  • 支持:是

  • 说明:返回有序集key中,所有score值介于min和max之间(包括等于min或max)的成员。有序集成员按score值递增次序排列。

  • 示例:

    > ZADD myzset 1 "one"
    (integer) 1
    > ZADD myzset 2 "two"
    (integer) 1
    > ZADD myzset 3 "three"
    (integer) 1
    > ZREVRANGEBYSCORE myzset +inf -inf
    1) "three"
    2) "two"
    3) "one"
    > ZREVRANGEBYSCORE myzset 2 1
    1) "two"
    2) "one"
    > ZREVRANGEBYSCORE myzset 2 (1
    1) "two"
    > ZREVRANGEBYSCORE myzset (2 (1
    (empty array)
    

# zscan

  • 支持:是

  • 说明:对元素进行增量迭代

  • 示例:

    > keys *
      1) "testzadd"
      > zcard testzadd
      (integer) 2560
      > zscan testzadd 0 match "1*"
      1) "10"
      2)  1) "1\x17\xf4\x9f\xcck\x8b\xd4R\xff"
      	2) "742"
    > zscan testzadd 0 count 1
      1) "1"
      2) 1) "\xe9\xcf\xacW\x84#C\x8c\n\xb7"
     	2) "385"
    

# zscore

  • 支持:是

  • 说明:返回有序集中,指定成员的分数值

  • 示例:

    > ZADD myzset 1 "one"
    (integer) 1
    > ZSCORE myzset "one"
    "1"
    

# zrevrank

  • 支持:是

  • 说明:返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序

  • 示例:

    > ZADD myzset 1 "one"
    (integer) 1
    > ZADD myzset 2 "two"
    (integer) 1
    > ZADD myzset 3 "three"
    (integer) 1
    > ZREVRANK myzset "one"
    (integer) 2
    > ZREVRANK myzset "four"
    (nil)
    > ZREVRANK myzset "three" WITHSCORE
    1) (integer) 0
    2) "3"
    > ZREVRANK myzset "four" WITHSCORE
    (nil)
    

# zunionstore

  • 支持:是

  • 说明:求两个或多个有序集合的并集,并将返回结果存储在新的 key 中

  • 示例:

    > ZADD zset1 1 "one"
    (integer) 1
    > ZADD zset1 2 "two"
    (integer) 1
    > ZADD zset2 1 "one"
    (integer) 1
    > ZADD zset2 2 "two"
    (integer) 1
    > ZADD zset2 3 "three"
    (integer) 1
    > ZUNIONSTORE out 2 zset1 zset2 WEIGHTS 2 3
    (integer) 3
    > ZRANGE out 0 -1 WITHSCORES
    1) "one"
    2) "5"
    3) "three"
    4) "9"
    5) "two"
    6) "10"
    

# bzpopmin

  • 支持:是

  • 说明:从一个或多个有序集合中弹出分数最低的元素

  • 示例:

      > ZADD zset1 0 a 1 b 2 c
      (integer) 3
      > BZPOPMIN zset1 zset2 0
      1) "zset1"
      2) "a"
      3) "0"
    

# bzpopmax

  • 支持:是

  • 说明:从一个或多个有序集合中弹出分数最高的元素

  • 示例:

      > ZADD zset1 0 a 1 b 2 c
      (integer) 3
      > BZPOPMAX zset1 zset2 0
      1) "zset1"
      2) "c"
      3) "2"