Redis数据结构详解之Zset(五)
序言
Zset跟Set之间可以有并集运算,因为他们存储的数据字符串集合,不能有一样的成员出现在一个zset中,但是为什么有了set还要有zset呢?zset叫做有序集合,而set是无序的,zset怎么做到有序的呢?就是zset的每一个成员都有一个分数与之对应,并且分数是可以重复的。有序集合的增删改由于有啦排序,执行效率就是非常快速的,即便是访问集合中间的数据也是非常高效的。
下面我来展示下操作zset的redis命令
操作单个zset的redis命令
1、添加,如果值存在添加,将会重新排序。zadd
127.0.0.1:6379>zadd myZSet 1 zlh ---添加分数为1,值为zlh的zset集合
127.0.0.1:6379>zadd mySet 2 Tom 3 Jim ---添加2条zset集合,分别为分数为2、3,值为tom、jim的集合。
2、查看zset集合的成员个数。zcard
127.0.0.1:6379>zcard myZSet ---输出zset的成员个数为3
3、查看Zset指定范围的成员,withscores为输出结果带分数。zrange
127.0.0.1:6379>zrange mZySet 0 -1 ----0为开始,-1为结束,输出顺序结果为: zlh tom jim
127.0.0.1:6379>zrange mZySet 0 -1 withscores ---输出带分数的结果为:zlh 1 tom 2 jim 3
4、获取zset成员的下标位置,如果值不存在返回null。zrank
127.0.0.1:6379>zrank mZySet Jim ---Jim的在zset集合中的下标为2
5、获取zset集合指定分数之间存在的成员个数。zcount
127.0.0.1:6379>zcount mySet 1 3 ---输出分数>=1 and 分数 <=3的成员个数为3,因为分数是可以重复的,所以这个命令是有道理的。
6、删除指定的一个成员或多个成员。zrem
127.0.0.1:6379>zrem myZSet zlh --删除值为zlh的zset成员
127.0.0.1:6379>zrem myZSet Tom Jim ---删除值为Tom和Jim的两个zset成员
7、获取指定值的分数。zscore
127.0.0.1:6379>zadd myZset 1 zlh 1 tom 2 jim 3 xdd 4 pmm ---由于上面的数据被删除完了,这里添加5条示范数据再。
127.0.0.1:6379>zscore myZset zlh ---输出值为zlh的分数为1
8、给指定元素的分数进行增减操作,负值为减,正值为加。zincrby
127.0.0.1:6379>zscore myZset tom ----输出tom的分数为1
127.0.0.1:6379>zincrby myZset 4 tom ---tom的分数值加4,输入分数值为5
127.0.0.1:6379>zscore myZset tom ---输出tom的分数值为5
9、根据指定分数的范围获取值。zrangebysocre
127.0.0.1:6379>zrangebyscore myZset 1 5 ---输出分数>=1 and <=5的成员值为:zlh jim xdd pmm tom
127.0.0.1:6379>zrangebyscore myZset (1 5 ----输出分数>1 and <=5的成员值为:jim xdd pmm tom
127.0.0.1:6379>zrangebyscore myZset 2 5 limit 1 2 ---检索分数为2到5之间的数据,然后从下标为1的数据开始往后输出2个数据,包含下标为1的数据。结果为:xdd pmm
127.0.0.1:6379>zrangebyscore myZset -inf +inf limit 2 3 ----+inf表示最后一个成员,-inf表示第一个成员,意思是:检索所有数据,然后从下标为2的数据开始再往后输出2个数据。结果为:xdd pmm tom
10、倒序,从高到底排序输出指定范围的数据。zrevrange,zrevrangebyscore
127.0.0.1:6379>zrevrange myZset 2 3 ---先倒序排列数据,输出下标为>=2 and <=3的数据为xdd jim,这里注意的是倒序之后下标也反过来了。
127.0.0.1:6379>zrevrange myZset 2 4 withscores ---输出结果为:xdd 3 jim 2 zlh 1
127.0.0.1:6379>zrevrangebyscore myZset 5 1 limit 3 2 ----输出结果为:jim zlh 。获取score <=5 and >=1,从下标为为3开始获取2条数据。
127.0.0.1:6379>zrevrangebyscore myZset 4 2 ----分数>=2 and <=4 的数据倒序输出:pmm xdd jim
11、根据坐标,分数范围删除数据。zremrangebyscore,zremrangebyrank
127.0.0.1:6379>zremrangebyscore myZset 1 2 ---删除分数>=1 and <=2的数据
127.0.0.1:6379>zrange myZset 0 -1 ----输出结果为 xdd pmm tom
127.0.0.1:6379>zremrangebyrank myZset 0 2 ---删除下标>=0 and <=2的zset元素
127.0.0.1:6379>zrange myZset 0 -1 --输出结果为:empty list or set 。没数据啦。
操作多个zset的redis命令
1、求多个zset的并集
127.0.0.1:6379>zadd myZset 1 zlh 2 jim 3 tom ---添加3个数据
127.0.0.1:6379>zadd youZset 1 zlh 2 xdd 3 pmm ---添加3个数据
127.0.0.1:6379>zunionzstore heZset 2 myZset youZset ----将myzset和youzset的并集添加到hezset中。
2、求多个zset的交集
127.0.0.1:6379>zinterstore sheZset 2 myZset youZset ----将myzset和youZset 的交集添加到sheZset中。
小结
如果你在看到本文后有什么疑问,请加入博客左上角群,一起交流学习。
我的redis系列博文:双击地址
Redis数据结构详解之Zset(五)的更多相关文章
- 5种Redis数据结构详解
本文主要和大家分享 5种Redis数据结构详解,希望文中的案例和代码,能帮助到大家. 转载链接:https://www.php.cn/php-weizijiaocheng-388126.html 2. ...
- Redis数据结构详解之List(二)
序言 思来想去感觉redis中的list没什么好写的,如果单写几个命令的操作过于乏味,所以本篇最后我会根据redis中list数据类型的特殊属性,同时对比成熟的消息队列产品rabbitmq,使用red ...
- Redis数据结构详解,五种数据结构分分钟掌握
redis数据类型分为:字符串类型.散列类型.列表类型.集合类型.有序集合类型.redis这么火,它运行有多块?一台普通的笔记本电脑,可以在1秒钟内完成十万次的读写操作.原子操作:最小的操作单位,不能 ...
- redis数据结构详解之Hash(四)
序言 Hash数据结构累似c#中的dictionary,大家对数组应该比较了解,数组是通过索引快速定位到指定元素的,无论是访问数组的第一个元素还是最后一个元素,所耗费的时间都是一样的,但是数组中的索引 ...
- Redis数据结构详解之Set(三)
序言 在Redis中,Set和list都是字符串序列,非常相似,不同之处在于Set是用哈希表来保持字符串的唯一性,没有先后顺序,不像list一样,可以在首尾增删数据.但是set也有自己的相应处理命令来 ...
- Redis数据结构详解(一)
前言 Redis和Memcached最大的区别,Redis 除啦支持数据持久化之外,还支持更多的数据类型而不仅仅是简单key-value结构的数据记录.Redis还支持对这些数据类型做更多的服务端操作 ...
- Redis数据结构详解(2)-redis中的字典dict
前提知识 字典,又被称为符号表(symbol table)或映射(map),其实简单地可以理解为键值对key-value. 比如Java的常见集合类HashMap,就是用来存储键值对的. 字典中的键( ...
- Redis数据结构详解(1)-redis中的字符串(SDS)
前提知识 我们先从百科上摘下Redis的解释: Redis是一个使用ANSI C编写的开源.支持网络.基于内存.分布式.可选持久性的键值对存储数据库. (不用过多在意ANSI,它只是一个标准,你可以理 ...
- redis 五种数据结构详解(string,list,set,zset,hash)
redis 五种数据结构详解(string,list,set,zset,hash) Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存 ...
随机推荐
- Asp.net Core中使用Session
前言 2017年就这么悄无声息的开始了,2017年对我来说又是特别重要的一年. 元旦放假在家写了个Asp.net Core验证码登录, 做demo的过程中遇到两个小问题,第一是在Asp.net Cor ...
- nw.js桌面软件开发系列 第0.1节 HTML5和桌面软件开发的碰撞
第0.1节 HTML5和桌面软件开发的碰撞 当我们谈论桌面软件开发技术的时候,你会想到什么?如果不对技术本身进行更为深入的探讨,在我的世界里,有这么多技术概念可以被罗列出来(请原谅我本质上是一个Win ...
- ExtJS 4.2 Date组件扩展:添加清除按钮
ExtJS中除了提供丰富的组件外,我们还可以扩展他的组件. 在这里,我们将在Date日期组件上添加一个[清除]按钮,用于此组件已选中值的清除. 目录 1. Date组件介绍 2. 主要代码说明 3. ...
- 富文本编辑器Simditor的简易使用
最近打算自己做一个博客系统,并不打算使用帝国cms或者wordpress之类的做后台管理!自己处于学习阶段也就想把从前台到后台一起谢了.好了,废话不多说了,先来看看富文本编辑器SimDitor,这里是 ...
- Golang 编写的图片压缩程序,质量、尺寸压缩,批量、单张压缩
目录: 前序 效果图 简介 全部代码 前序: 接触 golang 不久,一直是边学边做,边总结,深深感到这门语言的魅力,等下要跟大家分享是最近项目 服务端 用到的图片压缩程序,我单独分离了出来,做成了 ...
- Angularjs参考框架地址
1.Table(Grid)参考地址 https://github.com/samu/angular-table https://github.com/daniel-nagy/md-data-table ...
- [算法]——快速排序(Quick Sort)
顾名思义,快速排序(quick sort)速度十分快,时间复杂度为O(nlogn).虽然从此角度讲,也有很多排序算法如归并排序.堆排序甚至希尔排序等,都能达到如此快速,但是快速排序使用更加广泛,以至于 ...
- [数据结构]——堆(Heap)、堆排序和TopK
堆(heap),是一种特殊的数据结构.之所以特殊,因为堆的形象化是一个棵完全二叉树,并且满足任意节点始终不大于(或者不小于)左右子节点(有别于二叉搜索树Binary Search Tree).其中,前 ...
- PhpStorm和WAMP配置调试参数,问题描述Error. Interpreter is not specified or invalid. Press “Fix” to edit your project configuration.
PhpStorm和WAMP配置调试参数 问题描述: Error. Interpreter is not specified or invalid. Press “Fix” to edit your p ...
- Maven常用命令
开发中常用的命令: 1. mvn compile 编译源代码2. mvn test-compile 编译测试代码3. mvn test 运行测试4. mvn package 打包,根据pom.xml打 ...