当前位置:嗨网首页>书籍在线阅读

27-命令拾遗

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

3.6.4 命令拾遗

1.获得集合中元素的数量

ZCARD key

例如:

redis>ZCARD scoreboard
(integer) 6

2.获得指定分数范围内的元素个数

ZCOUNT key min max

例如:

redis>ZCOUNT scoreboard 90 100
(integer) 2

ZCOUNT 命令的 minmax 参数的特性与 ZRANGEBYSCORE 命令中的一样:

redis>ZCOUNT scoreboard (89 +inf
(integer) 2

3.删除一个或多个元素

ZREM key member [member …]

ZREM 命令的返回值是成功删除的元素数量(不包含本来就不存在的元素)。

redis>ZREM scoreboard Wendy
(integer) 1
redis>ZCARD scoreboard
(integer) 5

4.按照排名范围删除元素

ZREMRANGEBYRANK key start stop

ZREMRANGEBYRANK 命令按照元素分数从小到大的顺序(即索引0表示最小的值)删除处在指定排名范围内的所有元素,并返回删除的元素数量。如:

redis>ZADD testRem 1 a 2 b 3 c 4 d 5 e 6 f
(integer) 6
redis>ZREMRANGEBYRANK testRem 0 2
(integer) 3
redis>ZRANGE testRem 0 -1
1) "d"
2) "e"
3) "f"

5.按照分数范围删除元素

ZREMRANGEBYSCORE key min max

ZREMRANGEBYSCORE 命令会删除指定分数范围内的所有元素,参数 minmax 的特性和 ZRANGEBYSCORE 命令中的一样。返回值是删除的元素数量。如:

redis>ZREMRANGEBYSCORE testRem (4 5
(integer) 1
redis>ZRANGE testRem 0 -1
1) "d"
2) "f"

6.获得元素的排名

ZRANK key member
ZREVRANK key member

ZRANK 命令会按照元素分数从小到大的顺序获得指定的元素的排名(从0开始,即分数最小的元素排名为0)。如:

redis>ZRANK scoreboard Peter
(integer) 0

ZREVRANK 命令则相反(分数最大的元素排名为0):

redis>ZREVRANK scoreboard Peter
(integer) 4

7.计算有序集合的交集

ZINTERSTORE destination numkeys key [key …] [WEIGHTS weight [weight …]] [AGGREGATE SUM|MIN|MAX]

ZINTERSTORE 命令用来计算多个有序集合的交集并将结果存储在 destination 键中(同样以有序集合类型存储),返回值为 destination 键中的元素个数。

destination 键中元素的分数是由 AGGREGATE 参数决定的。

(1)当 AGGREGATESUM 时(也就是默认值), destination 键中元素的分数是每个参与计算的集合中该元素分数的和。例如:

redis> ZADD sortedSets1 1 a 2 b
(integer) 2
redis> ZADD sortedSets2 10 a 20 b
(integer) 2
redis> ZINTERSTORE sortedSetsResult 2 sortedSets1 sortedSets2
(integer) 2
redis> ZRANGE sortedSetsResult 0 -1 WITHSCORES
1) "a"
2) "11"
3) "b"
4) "22"

(2)当 AGGREGATEMIN 时, destination 键中元素的分数是每个参与计算的集合中该元素分数的最小值。例如:

redis> ZINTERSTORE sortedSetsResult 2 sortedSets1 sortedSets2 AGGREGATE MIN
(integer) 2
redis> ZRANGE sortedSetsResult 0 -1 WITHSCORES
1) "a"
2) "1"
3) "b"
4) "2"

(3)当 AGGREGATEMAX 时, destination 键中元素的分数是每个参与计算的集合中该元素分数的最大值。例如:

redis> ZINTERSTORE sortedSetsResult 2 sortedSets1 sortedSets2 AGGREGATE MAX
(integer) 2
redis> ZRANGE sortedSetsResult 0 -1 WITHSCORES
1) "a"
2) "10"
3) "b"
4) "20"

ZINTERSTORE 命令还能够通过 WEIGHTS 参数设置每个集合的权重,每个集合在参与计算时元素的分数会被乘上该集合的权重。例如:

redis> ZINTERSTORE sortedSetsResult 2 sortedSets1 sortedSets2 WEIGHTS 1 0.1
(integer) 2
redis> ZRANGE sortedSetsResult 0 -1 WITHSCORES
1) "a"
2) "2"
3) "b"
4) "4"

另外还有一个命令与 ZINTERSTORE 命令的用法一样,名为 ZUNIONSTORE ,它的作用是计算集合间的并集,这里不再赘述。