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

Redis的数据类型(四)—— Sortedset数据类型**Sortedset数据类型**一、redissortedset介绍在集合类型的基础上,有序集合类型为集合中的每个元素都关联一个分数,这使得我们不仅可以完成插入、删除和判断元素是否存在在集合中,还能够获得分数最高或最低的前N个元素、获取指定分数范围内的元素等与分数有关的操作。在某些方面有序集合和列表类型有些相似。1、二者都是有序的。2、二者都可以获得某一范围的元素。但是,二者…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

**

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.net/180059.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Linux下Jboss安装使用+Jboss部署脚本「建议收藏」

    Linux下Jboss安装使用+Jboss部署脚本「建议收藏」Jboss是JavaEE应用服务器(就像Apache是web服务器一样),专门用来运行JavaEE程序的。JBoss的运行需要JAVA环境的支持,所以我们首先安装JDK。本章环境:系统:CentOSLinuxrelease7.9.2009前期工作准备:关闭防火墙关闭selinux[root@server-jboos~]#systemctlstopfirewalld.service[root@server-jboos~]#systemctldistablefir

    2022年9月1日
    7
  • 浅谈数字音视频传输网络——AVB[通俗易懂]

    AVB有两种流格式:AM824和AAF。AM824支持24bit音频,iec60958音频编码(SPDIF和AES3),SMPTE时间码和MIDI。对于发送端AM824有三个选项“non-blocking(sync)”、“non-blocking(aync)”和“blocking”。流量整形是为了避免在以太网中发生丢弃数据的情况,通常采用漏桶算法(LeakyBucket)来完成流量整形或速率限制(RateLimiting)。它的主要目的是控制数据注入到网络的速率,平滑网络上的突发流量。

    2022年4月14日
    267
  • unity3d的入门教程_unity菜鸟教程

    unity3d的入门教程_unity菜鸟教程Unity3D新手入门初级教程U3D是由UnityTechnologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。可发布游戏至Windows、Mac、Wii、iPhone、Windowsphone8和Android平台。也可以利用Unitywebplayer插件发布网页游戏,支持Mac和Windows的网页浏览。它的网页播放器也被Macwidgets所支持!U3D现已经占领了国内85%的手游

    2022年9月19日
    2
  • MyEclipse激活成功教程 CI-2018.9.0版本

    MyEclipse激活成功教程 CI-2018.9.0版本介绍myeclipse是eclipse进化版,有很强大的功能,但是,它是收费的。这也是阻碍大多数人使用它的原因。作为学生,想使用该工具进行学习,但苦于资金有限,只能进行激活成功教程后再学习。本人找了很多的激活成功教程教程,最初感觉很简单,就打算直接开搞;但是,按照教程一步一步来,结果发现,自己就是不能成功。为此,我还安装了很多不同的版本,但由于没有找到根本原因,全都以失败告终。后来,仔细研究后才知道原因…

    2022年9月26日
    1
  • java 文件转inputstream_把文本转换成表格

    java 文件转inputstream_把文本转换成表格以下是一些将InputStream转换为FileJava示例手动将InputStream复制到FileOutputStreamApacheCommonsIO–FileUtils.copyInputStreamToFileJava1.7NIOFiles.copy1.FileOutputStream1.1我们必须将数据从InputStream手动复…

    2022年9月21日
    2
  • java 解析xml报文(字符串)「建议收藏」

    java 解析xml报文(字符串)「建议收藏」一:maven:<!–解析xml报文–><dependency><groupId>dom4j</groupId><artifactId>dom4j</artifactId><version>1….

    2022年6月4日
    237

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号