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. Jmeter如何做接口测试

    最近在学习Jmeter,记录下来,与大家分享. 1. 打开Jmeter,我用的是5.0版本,打开后如下图所示: 2. 右键测试计划,添加 - 线程(用户) - 线程组,如下如图所示: 3. 右键线程组 ...

  2. python 的入门

    时光匆匆,大一的时间过的很快,从大一上学期学的c开始,就感觉出c的结构很复杂,但是不可否认,学习c和汇编等涉及到系统底层知识才会有可能开发出属于自己知识产权的东西,然而,python以其简约性,丰富的 ...

  3. 美国末日AI System设计分享

    引言 好久没有写博客了,这半年在游戏公司工作,过得比较充实,每天不是add feature就是debug,所以忽视了写博客.今天发一篇关于AI博客. 主要是最近看了一些关于"The Last ...

  4. SQL行列乾坤大挪移

    “生活总是这样,有时候,你需要一个苹果,但别人却给了你一个梨.” 今天dalao邮件里需要添加一张每月累计长长的图,可是,拿到手上的SQL导出数据不符合我最爱的pyecharts的数据输入格式,头大. ...

  5. vue2.0做移动端开发用到的相关插件和经验总结1.0

    最近在用vue2.0做微信公众号相关的前端开发,经过这次开发实践,现将项目中用到的相关比较实用的插件及遇到的相关问题进行整理,希望和大家共同交流...... cssrem:一个CSS值转REM的VSC ...

  6. selenium 列表循环定位方法。

    话不多说,直接上代码. 就是循环第一层,然后拼接,然后继续循环,继续屏接,任你多少层都不是问题. def c_select(self, values, text): """ ...

  7. Oracle和MySQL在使用上的区别

    1.  Oracle是大型数据库而MySQL是中小型数据库,MySQL是开源的而Oracle的价格非常高. 2.  Oracle支持大并发,大访问量. 3.  安装所用的空间差别也是很大,MySQL安 ...

  8. Phonegap 环境配置

    目前要开发 Web App 还是有比较多的选择的 如 Phonegap.MUI.AppCan,接下来以 Web前端开发工程师 的角度来一个 Phonegap 的 First Blood 一.开发环境: ...

  9. PSP Daily——团队项目Alpha发布

    视频展示:优酷视频链接.文案如下 PSP Daily软件NABCD分析: 1) N (Need 需求) PSP Daily 解决了用户(软件工程课上学生)记录例行报告.写每周PSP表格和统计的需求.潜 ...

  10. 20172305 暑假作业 之 TimeCalculate & Save Iron Man

    20172305 暑假作业 之 TimeCalculate & Save Iron Man TimeCalculate 项目介绍 项目名称: TimeCalculate 项目简介: 本项目基于 ...