redis中ZSet命令的基础操作

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 的有序集合实现了“销量排行榜”的功能。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极客李华

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值