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. 牛客小白月赛9H论如何出一道水题(两个连续自然数互质)

    题面 记录一下...连续得两个自然数互质,这题再特判一下1的情况 #include<bits/stdc++.h> using namespace std; int main() { lon ...

  2. 不相交集合ADT -数据结构(C语言实现)

    读数据结构与算法分析 不相交集合 等价关系 满足三个性质 - 自反性 - 对称性 - 传递性 基本数据结构 基本思路 使用一个数组,下标表示该集合,内容表示指向的父亲 实现 类型声明 typedef ...

  3. 高可用Kubernetes集群-6. 部署kube-apiserver

    八.部署kube-apiserver 接下来3章节是部署Kube-Master相关的服务,包含:kube-apiserver,kube-controller-manager,kube-schedule ...

  4. POJ 1417 并查集 dp

    After having drifted about in a small boat for a couple of days, Akira Crusoe Maeda was finally cast ...

  5. POWERDESIGNER生成的代码有引号

    昨天在用powerdesigner画的一个导入ORACLE中.发现都带了双引号, 当时没在意,以为是分隔符.那想后要在ORACLE查询表是一定要输入双引号才能查询.. 后来才知道而这在oracle 中 ...

  6. Python:集合操作总结

    集合是一组无序排列的不重复元素集 [注]:集合的最大作用是对一个序列进行去重操作 一.集合的分类 在Python中集合分为两类,为可变集合(set)和不可变集合(frozenset).对于可变集合(s ...

  7. UVALive - 6887 Book Club 有向环的路径覆盖

    题目链接: http://acm.hust.edu.cn/vjudge/problem/129727 D - Book Club Time Limit: 5000MS 题意 给你一个无自环的有向图,问 ...

  8. 关于解决乱码问题的一点探索之一(涉及utf-8和GBK)

    在使用Visual Studio 2005进行MFC开发的时候,发现自动添加的注释变成了乱码.像这样: // TODO: ÔÚ´ËÌí¼ÓרÓôúÂëºÍ/»òµ÷ÓûùÀà 还有这样: // ...

  9. HDFS shell命令行常见操作

    hadoop学习及实践笔记—— HDFS shell命令行常见操作 附:HDFS shell guide文档地址 http://hadoop.apache.org/docs/r2.5.2/hadoop ...

  10. SSM整合CRUD操作(一)

    http://www.cnblogs.com/loger1995/p/6352179.html?utm_source=itdadao&utm_medium=referral 说明:这是我刚开始 ...