Redis-SortedSets有序集合1.zadd

1. zadd key [NX|XX] [CH] [INCR] score member [score member ...]

将member添加到key中 sore是member排序的依据,是一个双精度的浮点型数字字符串。

+inf(最大)和-inf(最小) 都是有效值。

  • XX: 仅仅更新存在的成员,不添加新成员。
  • NX: 不更新存在的成员。只添加新成员。
  • CH: 修改返回值为发生变化的成员总数
  • INCR: 当ZADD指定这个选项时,成员的操作就等同ZINCRBY命令,对成员的分数进行递增操作

成员不重复,但分数可以相同,分数相同按字典排序,比较的是字符串的字节数组

redis> ZADD myzset 1 "one"
(integer) 1
redis> ZADD myzset 1 "uno"
(integer) 1
redis> ZADD myzset 2 "two" 3 "three"
(integer) 2
redis> ZRANGE myzset 0 -1 WITHSCORES
1) "one"
2) "1"
3) "uno"
4) "1"
5) "two"
6) "2"
7) "three"
8) "3"
redis> 
复制代码

2. ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]

  • 返回key的有序集合中的分数在min和max之间的所有元素(包括分数等于max或者min的元素)。
  • 元素被认为是从低分到高分排序的。
  • 可选的LIMIT参数指定返回结果的数量及区间
  • 可选参数WITHSCORES会返回元素和其分数,而不只是元素
  • 默认使用闭区间,你也可以通过给参数前增加 ( 符号来使用可选的开区间
redis> ZADD myzset 1 "one"
(integer) 1
redis> ZADD myzset 2 "two"
(integer) 1
redis> ZADD myzset 3 "three"
(integer) 1
redis> ZRANGEBYSCORE myzset -inf +inf
1) "one"
2) "two"
3) "three"
redis> ZRANGEBYSCORE myzset 1 2
1) "one"
2) "two"
redis> ZRANGEBYSCORE myzset (1 2
1) "two"
redis> ZRANGEBYSCORE myzset (1 (2
(empty list or set)
redis> 
复制代码

3. zrem key member [member...]

当key存在,但是其不是有序集合类型,就返回一个错误。

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

复制代码

4. zcard key

返回key的有序集元素个数。

redis> ZADD myzset 1 "one"
(integer) 1
redis> ZADD myzset 2 "two"
(integer) 1
redis> ZCARD myzset
(integer) 2
redis> 
复制代码