Sorted Set是Set的一个升级版本,它在Set的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,每次指定后,zset会自动重新按新的值调整顺序。可以理解为有两列的mysql表,一列存value,一列存顺序。操作中key理解为zset的名字。

  Sorted Set有序集合
添加一个元素 >zadd myzset 1 one
向myzset集合添加一个顺序号为“1”的元素“one”
注: 1.集合中的元素值是唯一的(不允许重复,也没有重复)。
    2.重复添加某元素时,虽返回0,但实际会更新了此元素的顺序号值。
    3.顺序号值允许重复,即同一顺序号值可以对应多个的元素值(多个元素值可以对应同一顺序号)。
使某元素的顺序号自增 >zincrby myzset 1 three  使元素“three”的顺序号值+1
>zincrby myzset 3 three  使元素“three”的顺序号值+3
>zincrby myzset -2 three 使元素“three”的顺序号值-2
注: 1.给正值就自加,给负值就自减;
    2.若给的元素值不存在,则会将其序号值设为0,然后再运算。
返回:返回自增(自减)运算后的结果值
   
部分获取集合元素

注:range 是通过(下标)索引偏移获取元素

>zrange myzset 0 -1 withscores
1) "one"
2) "1"
3) "file"
4) "2"
5) "three"
6) "4"
7) "seven"
8) "7"
获取全部元素,并附带序号;排序:zrange将顺序号按从“小->大”排序

>zrange myzset 2 -3 withscores
获取下标(索引)从第2个偏移到第-3个偏移的元素
注:第一个偏移从首0计数(需n1>=0),第二个偏移正负均可(首、尾偏移值均为-1);

>zrevrange myzset 0 -1 withscores
1) "seven"
2) "7"
3) "three"
4) "4"
5) "file"
6) "2"
7) "one"
8) "1"
获取全部元素,并附带序号;排序:zrevrange将顺序号按从“大->小”排序

>zrevrange myzset 1 -2 withscores
1) "three"
2) "4"
3) "file"
4) "2"

先按顺序号从“小->大”排序
然后指定“顺序号区间”获取元素

注:by score 按顺序号取元素

>zrange myzset 0 -1 withscores
1) "one"
2) "1"
3) "file"
4) "2"
5) "three"
6) "4"
7) "seven"
8) "7"

>zrangebyscore myzset 4 6 withscores
1) "three"
2) "4"
求顺序号介于4~6区间元素,只有一个“three”符合条件(range默认按序号由小->大排序)

>zrangebyscore myzset 4 7 withscores
1) "three"
2) "4"
3) "seven"
4) "7"
求顺序号介于4~7区间元素,有一个“three”和“seven”符合条件(range默认按序号由小->大排序)

先按顺序号从“大->小”排序
然后指定“顺序号区间”获取元素

注:by score 按顺序号取元素

>zrevrange myzset 0 -1 withscores
1) "seven"
2) "7"
3) "three"
4) "4"
5) "file"
6) "2"
7) "one"
8) "1"

>zrevrangebyscore myzset 7 4 withscores
1) "seven"
2) "7"
3) "three"
4) "4"
求顺序号介于7~4区间元素,有一个“seven”和“three”符合条件(range默认按序号由大->小排序)

   
先按顺序号从“小->大”排序,
然后获取“指定元素”的下标(索引)值

rank [ræŋk] 次序,顺序

>zrange myzset 0 -1 withscores
1) "one"
2) "1"
3) "file"
4) "2"
5) "three"
6) "4"
7) "seven"
8) "7"
>zrank myzset one     获取元素“one”的下标(索引)值
(integer) 0
>zrank myzset three   获取元素“three”的下标(索引)值
(integer) 2
注:zrank先将集合按顺序号按“小->大”排序,然后取元素在集合中的下标(索引)顺序,类似数组下标从0开始计数,one和three的下标(索引)值分别是0和2,序号值分别是1和4。元素下标(索引)值 同 元素顺序号值是两个概念。
先按顺序号从“大->小”排序,
然后获取“指定元素”的下标(索引)值

rank [ræŋk] 次序,顺序

>zrevrange myzset 0 -1 withscores
1) "seven"
2) "7"
3) "three"
4) "4"
5) "file"
6) "2"
7) "one"
8) "1"
说明:zrevrange将序号score值从大到小排序
>zrevrank myzset one
(integer) 3
>zrevrank myzset three
(integer) 1
one和three的下标(索引)值分别是3和1
   
返回给定元素对应的顺序号 >zscore myzset three
"4"
   
先按顺序号从“小->大”排序,
返回给定”顺序号区间“的元素个数
>zrange myzset 0 -1 withscores
1) "one"
2) "1"
3) "file"
4) "2"
5) "three"
6) "4"
7) "seven"
8) "7"

>zcount myzset 2 3
(integer) 1
>zcount myzset 2 4
(integer) 2
>zcount myzset 2 5
(integer) 2
>zcount myzset 2 6
(integer) 2
>zcount myzset 2 7
(integer) 3

获取集合中元素总个数 >zcard myzset
返回集合中的元素总个数;
   
按元素名称删除元素 >zrem myzset two
从myzset集合中删除指定元素“two”,对应序号被一起删除

>zrem myzset four six
一次删除多个元素

返回实际被删除的元素个数

先按顺序号从“小->大”排序,
按索引(下标)区间删除元素
>zremrangebyrank myzset 1 1
删除索引(下标)区间在[1,1]的元素,即删除下标为1的元素

>zremrangebyrank myzset 2 4
删除索引(下标)区间在[2,4]的元素

返回实际被删除的元素个数

先按顺序号从“小->大”排序,
按顺序号区间删除元素
>zremrangebyscore myzset 2 2
(integer) 1
删除顺序号区间在[2,2]的元素,即:删除顺序号为2的元素。

>zremrangebyscore myzset 2 4
删除顺序号区间在[2,4]的元素

返回实际被删除的元素个数

   

Redis的Sorted Set有序集合命令的更多相关文章

  1. Redis之Sorted Set 有序集合

    Redis Sorted Set 有序集合 Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员. 不同的是每个元素都会关联一个double类型的分数.redis正是通过分 ...

  2. redis 学习(7) -- 有序集合

    redis 学习(7) -- 有序集合 zset 结构 有序集合:有序.不能包含重复元素 每个节点包含:score和value两个属性,根据score进行排序 如图: zset 重要 API 含义 命 ...

  3. Redis 源码简洁剖析 04 - Sorted Set 有序集合

    Sorted Set 是什么 Sorted Set 命令及实现方法 Sorted Set 数据结构 跳表(skiplist) 跳表节点的结构定义 跳表的定义 跳表节点查询 层数设置 跳表插入节点 zs ...

  4. Redis之有序集合命令

    Redis 有序集合(sorted set) Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员. 不同的是每个元素都会关联一个double类型的分数.redis正是通过 ...

  5. 15天玩转redis —— 第六篇 有序集合类型

    今天我们说一下Redis中最后一个数据类型 “有序集合类型”,回首之前学过的几个数据结构,不知道你会不会由衷感叹,开源的世界真好,写这 些代码的好心人真的要一生平安哈,不管我们想没想的到的东西,在这个 ...

  6. lunix下的redis数据库操作——zset有序集合

    创建:(有序集合存在一个权重的概念) zadd zset 1 a 2 b 3 c 4 d 5 e 6 f 7 g # 输出: # 1) "a" # 2) "b" ...

  7. Redis 之order set有序集合结构及命令详解

    1.zadd key score1 value1 score2 value2  添加元素 2.zrem key value1 value2 ..  删除集合中的元素 3.zremrangebyscor ...

  8. Redis命令拾遗五(有序集合)

    本文版权归博客园和作者吴双本人共同所有,博客园蜗牛NoSql系列分享 http://www.cnblogs.com/tdws/tag/NoSql/ Sorted Set 有序集合—Sorted Set ...

  9. Redis 有序集合(sorted set),发布订阅,事务,脚本,连接,服务器(三)

    Redis 有序集合(sorted set) Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员. 不同的是每个元素都会关联一个double类型的分数.redis正是通过 ...

随机推荐

  1. Spring学习(十二)-----Spring @PostConstruct和@PreDestroy实例

    实现 初始化方法和销毁方法3种方式: 实现标识接口 InitializingBean,DisposableBean(不推荐使用,耦合性太高) 设置bean属性 Init-method destroy- ...

  2. Sublime Text3.0的安装

    Sublime Text是一款轻量级的易于使用的前端编写软件,个人比较推荐. 找到Sublime的官网,下载对应的版本后,点击安装.安装完成后需要下载相应的插件才能进行更加 有效率的开发工作.编写前端 ...

  3. HTML5 + CSS3 实现地球绕太阳公转

    使用的是正面视角,主要是用 HTML5 + CSS3 来实现,JS只是用来画图. test.html: <!DOCTYPE html> <html> <head> ...

  4. Python函数标注

    Python函数标注 是关于用户自定义函数中使用的类型的完全可选元数据信息. 函数标注 以Python字典的形式存放在函数的 __annotations__ 属性中,并且不会影响函数的任何其他部分. ...

  5. Paper Reading - Im2Text: Describing Images Using 1 Million Captioned Photographs ( NIPS 2011 )

    Link of the Paper: http://papers.nips.cc/paper/4470-im2text-describing-images-using-1-million-captio ...

  6. springjdbc使用c3p0连接池报错 java.lang.NoClassDefFoundError: com/mchange/v2/ser/Indirector

    MyMaincom.test.sunc.MyMaintestMethod(com.test.sunc.MyMain)org.springframework.beans.factory.BeanCrea ...

  7. scrapy-redis+selenium+webdriver 部署到linux上

    背景:在使用selenium时,在本地使用windows,都会有一个图形界面,但是到了生产环境linux上没有了图形界面怎么部署呢? 解决方案: 1.安装图形化界面,不推荐,因为安装图形化界面会占用很 ...

  8. CSS3在线实战

    作者声明:本博客中所写的文章,都是博主自学过程的笔记,参考了很多的学习资料,学习资料和笔记会注明出处,所有的内容都以交流学习为主.有不正确的地方,欢迎批评指正. 本节课视频网站:https://www ...

  9. Scrum立会报告+燃尽图(十月二十一日总第十二次)

    此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2246 项目地址:https://git.coding.net/zhang ...

  10. Android 7.1.1 又出幺蛾子了 —— 再谈 Android 上的 Wifi 连接

    在之前的博客文章中,我写了点在 Android 6 系统中连接到指定名称的 Wifi 的体验.然而,在 Android 7 中,有一些东西又变化了.另外就是在那篇文章中我说要提供代码,结果拖到这篇文章 ...