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 命令的 min 和 max 参数的特性与 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 命令会删除指定分数范围内的所有元素,参数 min 和 max 的特性和 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)当 AGGREGATE 是 SUM 时(也就是默认值), 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)当 AGGREGATE 是 MIN 时, 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)当 AGGREGATE 是 MAX 时, 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 ,它的作用是计算集合间的并集,这里不再赘述。