zoukankan      html  css  js  c++  java
  • 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系列博文:双击地址

  • 相关阅读:
    多测师讲解html _伪类选择器17_高级讲师肖sir
    多测师讲解html _后代选择器16_高级讲师肖sir
    多测师讲解html _组合选择器_高级讲师肖sir
    多测师讲解html _标签选择器14_高级讲师肖sir
    前端 HTML form表单标签 input标签 type属性 重置按钮 reset
    前端 HTML form表单标签 textarea标签 多行文本
    前端 HTML form表单标签 input标签 type属性 file 上传文件
    前端 HTML form表单标签 input标签 type属性 radio 单选框
    前端 HTML form表单标签 input标签 type属性 checkbox 多选框
    前端 HTML form表单目录
  • 原文地址:https://www.cnblogs.com/knowledgesea/p/4999288.html
Copyright © 2011-2022 走看看