前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis的数据类型(四)—— Sortedset数据类型

Redis的数据类型(四)—— Sortedset数据类型

作者头像
全栈程序员站长
发布2022-11-03 10:39:14
4590
发布2022-11-03 10:39:14
举报

**

Sortedset数据类型

**

一、redis sorted set介绍 在集合类型的基础上,有序集合类型为集合中的每个元素都关联一个分数,这使得我们不仅可以完成插入、删除和判断元素是否存在在集合中,还能够获得分数最高或最低的前N个元素、获取指定分数范围内的元素等与分数有关的操作。

在某些方面有序集合和列表类型有些相似。 1、二者都是有序的。 2、二者都可以获得某一范围的元素。 但是,二者有着很大区别: 1、列表类型是通过链表实现的,获取靠近两端的数据速度极快,而当元素增多后,访问中间数据的速度会变慢。 2、有序集合类型使用散列表实现,所有即使读取位于中间部分的数据也很快。 3、列表中不能简单的调整某个元素的位置,但是有序集合可以(通过更改分数实现) 4、有序集合要比列表类型更耗内存。

二、增加元素 向有序集合中加入一个元素和该元素的分数,如果该元素已经存在则会用新的分数替换原有的分数。返回值是新加入到集合中的元素个数,不包含之前已经存在的元素。 语法:ZADD key score member [score member …] 例子: 127.0.0.1:6379> zadd scoreboard 80 zhangsan 89 lisi 94 wangwu (integer) 3 127.0.0.1:6379> zadd scoreboard 97 lisi (integer) 0

二、获取元素的分数 语法:ZSCORE key member 例子: 127.0.0.1:6379> zscore scoreboard lisi “97”

三、删除元素 移除有序集key中的一个或多个成员,不存在的成员将被忽略。 当key存在但不是有序集类型时,返回一个错误。 语法:ZREM key member [member …] 例子: 127.0.0.1:6379> zrem scoreboard lisi (integer) 1

四、获得排名在某个范围的元素列表 获得排名在某个范围的元素列表 按照元素分数从小到大的顺序返回索引从start到stop之间的所有元素(包含两端的元素) 语法:ZRANGE key start stop [WITHSCORES] 例子: 127.0.0.1:6379> zrange scoreboard 0 2 1) “zhangsan” 2) “wangwu” 3) “lisi“ 按照元素分数从大到小的顺序返回索引从start到stop之间的所有元素(包含两端的元素) 语法:ZREVRANGE key start stop [WITHSCORES] 例子: 127.0.0.1:6379> zrevrange scoreboard 0 2 1) ” lisi “ 2) “wangwu” 3) ” zhangsan “ 如果需要获得元素的分数的可以在命令尾部加上WITHSCORES参数 127.0.0.1:6379> zrange scoreboard 0 1 WITHSCORES 1) “zhangsan” 2) “80” 3) “wangwu” 4) “94”

五、获得指定分数范围的元素 语法:ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] 例子: 127.0.0.1:6379> ZRANGEBYSCORE scoreboard 90 97 WITHSCORES 1) “wangwu” 2) “94” 3) “lisi” 4) “97” 127.0.0.1:6379> ZRANGEBYSCORE scoreboard 70 100 limit 1 2 1) “wangwu” 2) “lisi” 六、增加某个元素的分数 返回值是更改后的分数 语法:ZINCRBY key increment member 例子: 127.0.0.1:6379> ZINCRBY scoreboard 4 lisi “101“

七、获得集合中元素的数量 语法:ZCARD key 例子: 127.0.0.1:6379> ZCARD scoreboard (integer) 3

八、获得指定分数范围内的元素个数 语法:ZCOUNT key min max 例子: 127.0.0.1:6379> ZCOUNT scoreboard 80 90 (integer) 1

九、按照排名范围删除元素 语法:ZREMRANGEBYRANK key start stop 例子: 127.0.0.1:6379> ZREMRANGEBYRANK scoreboard 0 1 (integer) 2 127.0.0.1:6379> ZRANGE scoreboard 0 -1 1) “lisi” 十、按照分数范围删除元素 语法:ZREMRANGEBYSCORE key min max 例子: 127.0.0.1:6379> zadd scoreboard 84 zhangsan (integer) 1 127.0.0.1:6379> ZREMRANGEBYSCORE scoreboard 80 100 (integer) 1

十一、获取元素的排名 从小到大 语法:ZRANK key member 例子: 127.0.0.1:6379> ZRANK scoreboard lisi (integer) 0 从大到小 语法:ZREVRANK key member 例子: 127.0.0.1:6379> ZREVRANK scoreboard zhangsan (integer) 1

十一、应用 商品销售排行榜 需求:根据商品销售量对商品进行排行显示 思路:定义商品销售排行榜(sorted set集合),Key为items:sellsort,分数为商品销售量。

写入商品销售量: 商品编号1001的销量是9,商品编号1002的销量是10 192.168.101.3:7007> ZADD items:sellsort 9 1001 10 1002 商品编号1001的销量加1 192.168.101.3:7001> ZINCRBY items:sellsort 1 1001 商品销量前10名: 192.168.101.3:7001> ZRANGE items:sellsort 0 9 withscores

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/180059.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月20日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Sortedset数据类型
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档