原文: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(五)相关推荐

  1. redis数据结构详解之Hash(四)

    原文:redis数据结构详解之Hash(四) 序言 Hash数据结构累似c#中的dictionary,大家对数组应该比较了解,数组是通过索引快速定位到指定元素的,无论是访问数组的第一个元素还是最后一个 ...

  2. Redis数据结构详解之Set(三)

    序言 在Redis中,Set和list都是字符串序列,非常相似,不同之处在于Set是用哈希表来保持字符串的唯一性,没有先后顺序,不像list一样,可以在首尾增删数据.但是set也有自己的相应处理命令来 ...

  3. 万字长文的Redis五种数据结构详解(理论+实战),建议收藏。

    本文脑图 前言 Redis是基于c语言编写的开源非关系型内存数据库,可以用作数据库.缓存.消息中间件,这么优秀的东西一定要一点一点的吃透它. 关于Redis的文章之前也写过三篇,阅读量和读者的反映都还 ...

  4. Redis底层数据结构详解

    Redis底层数据结构详解 我们知道Redis常用的数据结构有五种,String.List.Hash.Set.ZSet,其他的集中数据结构基本上也是用这五种实现的,那么,这五种是Redis提供给你的数 ...

  5. [redis] 10 种数据结构详解

    [redis] 10 种数据结构详解 简介 5种常见数据结构 string: 最常见的 string key value list: 双向链表 set: 集合- zset: 有序集合 hash: 类似 ...

  6. 探索Redis设计与实现6:Redis内部数据结构详解——skiplist

    Redis内部数据结构详解(6)--skiplist  2016-10-05 本文是<Redis内部数据结构详解>系列的第六篇.在本文中,我们围绕一个Redis的内部数据结构--skipl ...

  7. Redis内部数据结构详解(2)——skiplist

    Redis里面使用skiplist是为了实现sorted set这种对外的数据结构.sorted set提供的操作非常丰富,可以满足非常多的应用场景.这也意味着,sorted set相对来说实现比较复 ...

  8. [转]Redis内部数据结构详解-sds

    本文是<Redis内部数据结构详解>系列的第二篇,讲述Redis中使用最多的一个基础数据结构:sds. 不管在哪门编程语言当中,字符串都几乎是使用最多的数据结构.sds正是在Redis中被 ...

  9. redis 数据类型详解 以及 redis适用场景场合

    redis 数据类型详解 以及 redis适用场景场合 1. MySql+Memcached架构的问题 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访 ...

最新文章

  1. 从 Blast2GO 本地化聊一聊 Linux 下 MySQL 的源码安装
  2. 中科院詹剑锋:美国出口管控对中国开源软件及产业的影响。
  3. golang基本数据类型和string的相互转换
  4. 2019/4/17 Linux学习
  5. Mr.J--JS学习(继承模式发展史)
  6. Android SurfaceFlinger 学习之路(五)----VSync 工作原理
  7. 微信小程序web-view组件 打开外部url
  8. 联想笔记本免费WiFi上网详解
  9. 压缩JPG图片大小而且不失真
  10. 网站关键词密度设置与优化
  11. java面向对象猜拳游戏_面向对象猜拳游戏
  12. 黑客第二课:脱屌第一步(主要讲unix-like系统的初步知识)
  13. Excel·VBA多条件筛选组合结果
  14. 下雨天,走一段路,是走淋雨少还是跑
  15. win10怎么开启aptx_Soomal作品 - Windows与OSX 操作系统对aptX支持的验证测试报告 [Soomal]...
  16. 计算机中数值数据编码(大计基复习资料)
  17. mysql数据库密码破解方法
  18. 助力老旧小区安防智能化升级
  19. Intellij idea 第一天
  20. 用javascript编写网页:1.2css实践:页面布局

热门文章

  1. 全网最详细的Android Studio卸载、安装和启动教程
  2. vue可视化拖拽生成工具_GitHub - 1260215278/dragUI: 基于vuedraggable.js + uni 的可视化拖拽编程,自动生成项目,自动生成代码,自行导入第三方组件...
  3. 模块化加载_webpack模块化原理-异步加载模块
  4. feign返回结果统一处理_SpringCloud异常处理统一封装我来做-使用篇
  5. javascript权威指南_重读javascript权威指南(3)
  6. python通讯录的录入与测试_python实现手机通讯录搜索功能
  7. 邹城的关于机器人教育_【喜报】我校机器人队问鼎全国大学生机器人大赛冠军!...
  8. html 表格_HTML -- 表格结构
  9. 加州理工学院公开课:机器学习与数据挖掘_神经网络
  10. 安装 卸载 mysql linux,Linux 下MySQL 安装与卸载