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. Linux查看文件内容

    查看文件内容的命令: cat:连接文件并且打印在标准输出 tac:连接并且倒序打印文件 more:屏幕文件熟读过滤器 less head:输出文件的第一部分 tail:输出文件最后的部分 nl:输出文 ...

  2. Tensorflow基本开发架构

    Tensorflow基本开发架构 先说句题外话, 这段时间一直研究爬虫技术,主要目的是为将来爬取训练数据做准备,同时学习python编程.这一研究才发现,python的开发资源实在是太丰富了,所有你能 ...

  3. 使用Photon引擎进行unity网络游戏开发(四)——Photon引擎实现网络游戏逻辑

    使用Photon引擎进行unity网络游戏开发(四)--Photon引擎实现网络游戏逻辑 Photon PUN Unity 网络游戏开发 网络游戏逻辑处理与MasterClient 网络游戏逻辑处理: ...

  4. Atom 插件 Sync Settings 备份与恢复

    当使用 Atom IDEA.随着使用的越来越多,安装的插件也越来越多,一旦电脑重装后需要复原开发环境,这将是一件比较头疼的事.「Sync Settings」插件可以帮助我们解决这个问题. 操作流程 安 ...

  5. PHP性能优化 -实战篇

    借助xhprof 工具分析PHP性能 XHPorf(源自Fackbook 的PHP性能分析工具) 实战     通过分析Wordpress程序,做优化! 优化 找到需要优化的函数 grep 'impo ...

  6. java使用jacob将office文档转换为PDF格式

    jacob 包下载地址: http://sourceforge.net/projects/jacob-project/ 下载后,将jacob 与 jacob-1.19-x64.dll放到安装jdk目录 ...

  7. kafka浅谈

    关键词 producer       生产者 broker          缓存代理 consumer     消费者 partition       分区 topic            主题 ...

  8. 6. 网络信息API

    一.用数值表示socket地址&用名字表示socket地址(socket地址==>IP地址和端口号) 1. 用数值表示socket地址不便于记忆,也不便于扩展(比如从IPv4转移到IPv ...

  9. AVL树 算法思想与代码实现

    AVL树是高度平衡的二叉搜索树,按照二叉搜索树(Binary Search Tree)的性质,AVL首先要满足: 若它的左子树不为空,则左子树上所有结点的值均小于它的根结点的值: 若它的右子树不为空, ...

  10. OpenCV学习笔记——imread、imwrite以及imshow

    1.imread Loads an image from a file. 从文件中读取图像. C++: Mat imread(const string& filename, int flags ...