博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Redis命令拾遗五(有序集合)
阅读量:6828 次
发布时间:2019-06-26

本文共 1132 字,大约阅读时间需要 3 分钟。

本文版权归博客园和作者吴双本人共同所有,博客园蜗牛NoSql系列分享
Sorted Set

有序集合—Sorted Set是我最后要分享的一种Redis数据类型,有序集合在集合的基础上,为每一个元素,关联了一个分数的概念(Score)。不要忘了,集合中元素是唯一的,但是有序集合中的Score是可以相同的。

下面通过命令的介绍,来帮助大家认识有序集合。

添加命令,ZADD  key score member score member....注意分数是在前面哟。并且成功后返回成功数量。如果你同时添加两个相同元素,并且分数不同,那么被存入的,是后者。

获取元素,ZRANGE key start stop.在有序集合中,元素以score由小到大排序,并且索引从0开始。获取全部,0 -1(最后面的元素索引是-1),和列表一样,start索引要大于stop索引才能获取到元素。另外还有一个可选参数,WithScores,会相应的输出元素的分数。

另外还有ZRevRange,按照score从大到小的顺序输出。

Score支持双精度浮点数。

ZRangeByScore和ZRevRangeByScore。前者按照分数由小到大,并且给定分数范围,withScores是可选参数。limit也是可选参数,索引从0开始。后者则是由大到小。

另外需要特别注意的一点是,分数的筛选支持正无穷,和不包含‘(’符号。我们看到结果中,并没有95分的LeiJun。并且到正无穷。

ZSCORE,获取指定key中指定元素的score。

 ZInctBy ,为指定键下的指定Member,增加指定的 分数。我们给LeiJun增加了10分,返回105了。

 

 ZCARD,获取键下元素个数。我们看到有七个学生哈。

 ZCOUNT ,获取制定分数区间,元素个数,注意分数筛选,也支持‘(’不包含选择符。

 ZREM,移除元素。

ZRemRangeByScore,按照分数范围删除多个元素。

ZRemRangeByRank,按照正常由小到大的排名顺序删除,又有两个分数低的被删掉了。

 ZRANK,获取指定元素的排名。从0开始。ZRevRank则相反

 不足之处,欢迎补充和交流。

 

 

 

最后再简单总结有序集合和列表。有序集合和列表都是有序的,并且可以按照范围来获取元素。
列表通过链表来实现,获取靠近两端的数据速度很快,当数据量比较大的时候,获取中间的元素相应会变慢,比如你微信的朋友圈,大多使人看的都是这几天,最多也不过近几天的数据。中间元素很少会访问。
而有序集合使用跳跃表和散列表实现,其时间复杂度O(log(N)),所以取中间元素也很快。并且有序集合可以通过更改分数,来调整元素的位置。有序集合也更耗费内存。

 

转载地址:http://snykl.baihongyu.com/

你可能感兴趣的文章
Swift - 图像控件(UIImageView)的用法
查看>>
Cloneable接口和Object的clone()方法
查看>>
[saiku] 连接 mondrain 数据源出错-空指针错误
查看>>
人大、上财、复旦、上交四校2013年应届金融硕士就业去向
查看>>
技能UP:SAP OBYC自动记账的实例说明(含value String应用说明)
查看>>
[转]【HTTP】Fiddler(二) - 使用Fiddler做抓包分析
查看>>
Cts框架解析(8)-IBuildProvider
查看>>
asp.net mvc 之旅—— 第三站 路由模板中强大的自定义IRouteConstraint约束
查看>>
[TypeScript] Understanding Decorators
查看>>
解决Matlab画图直接保存.eps格式而导致图不全的问题
查看>>
BZOJ 3339: Rmq Problem 莫队算法
查看>>
ssh IP打通,hadoop启动失败
查看>>
Ubuntu/Centos 系统上安装与配置Nginx
查看>>
spring集成 JedisCluster 连接 redis3.0 集群
查看>>
DOM基础2
查看>>
什刹海记忆
查看>>
硬盘分区时GPT和MBR的区别/选择
查看>>
Nginx 配置简述
查看>>
css后代选择器(div.class中间不带空格)
查看>>
在CentOS下利用Python+selenium获取腾讯首页的今日话题。
查看>>