redis中ZSet命令的基础操作
本文讲解redis中的ZSet命令的基础操作。
基础操作
-
ZADD key score1 member1 [score2 member2 ...]
:ZADD scores 100 "Alice" 90 "Bob" 80 "Charlie"
创建名称为 scores 的有序集合,并向其中添加三个成员和分数。
-
ZCARD key
:ZCARD scores
返回 scores 中元素数量:3。
-
ZCOUNT key min max
:ZCOUNT scores 85 100
返回 scores 中分数在 85 和 100 之间的元素数量:2。
-
ZINCRBY key increment member
:ZINCRBY scores 10 "Charlie"
将 Charlie 的分数增加 10 分。
-
ZSCORE key member
:ZSCORE scores "Bob"
返回 Bob 的分数值:90。
-
ZRANK key member
:ZRANK scores "Alice"
返回 scores 中 Alice 的排名,按照分数值从小到大排序:0。
-
ZREVRANK key member
:ZREVRANK scores "Alice"
返回 scores 中 Alice 的排名,按照分数值从大到小排序:2。
-
ZRANGE key start stop [WITHSCORES]
:ZRANGE scores 0 1 WITHSCORES
返回 scores 中排名在 0 和 1 之间的所有成员和它们对应的分数。
-
ZREVRANGE key start stop [WITHSCORES]
:ZREVRANGE scores 0 1 WITHSCORES
返回 scores 中排名在 0 和 1 之间、按照分数值从大到小排序的所有成员和它们对应的分数。
-
ZREM key member1 [member2 ...]
:ZREM scores "Charlie"
从 scores 集合中移除 Charlie 成员及其分数。
-
ZREMRANGEBYRANK key start stop
:ZREMRANGEBYRANK scores 0 1
移除 scores 集合中排名在 0 和 1 之间的所有成员及其分数。
-
ZREMRANGEBYSCORE key min max
:ZREMRANGEBYSCORE scores 90 100
移除 scores 集合中分数在 90 和 100 之间的所有成员及其分数。
-
ZINTERSTORE destination numkeys key1 [key2 ...] [WEIGHTS weight1 [weight2 ...]] [AGGREGATE SUM|MIN|MAX]
:ZADD scores1 100 "Alice" 80 "Bob" ZADD scores2 90 "Alice" 70 "Charlie" ZINTERSTORE both_scores 2 scores1 scores2 WEIGHTS 2 3 AGGREGATE MAX
对两个有序集合 scores1 和 scores2 进行交集计算,将结果保存到新的有序集合 both_scores 中。权重设置为 2 和 3,聚合方法为取最大值。both_scores 中只包含成员 “Alice”。
-
ZUNIONSTORE destination numkeys key1 [key2 ...] [WEIGHTS weight1 [weight2 ...]] [AGGREGATE SUM|MIN|MAX]
:ZADD scores2 90 "Alice" 70 "Charlie" ZUNIONSTORE union_scores 2 scores scores2
对两个有序集合 scores 和 scores2 进行并集计算,将结果保存到新的有序集合 union_scores 中。union_scores 中包含所有成员:“Bob”, “Charlie”, “Alice”,而且成员 “Alice” 的分数为 190(即 scores 中的 100 加上 scores2 中的 90)。
具体案例
假设有一家电商网站,需要实现“销量排行榜”功能。为了方便统计商品的销售量,并能够按照销售量从高到低进行排序,使用 Redis 的有序集合来存储所有商品以及对应的销售量。
在 Redis 中,可以通过以下命令将某个商品添加到具体类型的销量排行榜中(例如"computer_sales"):
ZADD computer_sales 101 "Macbook Pro"
其中,“Macbook Pro” 是商品名称,101 是它的销售量。
如果需要查询销量排行榜前 10 名的商品,可以使用以下命令:
ZREVRANGE computer_sales 0 9 WITHSCORES
执行以上命令会返回销量排行榜前 10 名的所有商品和对应的销售量。
同时,也可以针对某个商品的销售量进行增加或减少操作,例如:
ZINCRBY computer_sales 50 "Lenovo Thinkpad"
以上命令将 “Lenovo Thinkpad” 的销售量增加了 50。
这样,电商网站就成功地利用 Redis 的有序集合实现了“销量排行榜”的功能。