Python操作Redis之有序集合

    reids 版本            redis                    2.10.6

    1. import redis     
    2.  
      from idlelib.IOBinding import encoding
    3.  
      from pip.utils import Inf
    4.  
      pool=redis.ConnectionPool(host='192.168.1.106',port=6379,db=0)
    5.  
      r = redis.StrictRedis(connection_pool=pool)
    6.  
      #我们先加入5条数据
    7.  
      p = r.pipeline()
    8.  
      p.zadd('score',90.9,'peter',95,'white',80,'black',70,'tom',100,'sheng')
    9.  
      p.execute()
    10.  
       
    11.  
      #接下来,我们查询一个人的分数,注意,我们存储的时候写入的整数
    12.  
      #其实redis里存储的也是整数,但python取出来后就变成了float
    13.  
      print r.zscore('score', 'peter')
    14.  
       
    15.  
      '''
    16.  
      下面两个函数返回相同的结果,但使用方式是不一样的
    17.  
      zrange 的第2个和第3个参数表示第几行到第几行,zrangebyscore 的第2个和第3个表示从哪个分数范围内
    18.  
      取值,第4个参数表示从第几行开始取,第5个参数表示取几个值回来
    19.  
      zrange的第四个参数表示降序还是升序
    20.  
      最后一个参数为True表示带分数返回,其实最后面还可以写一个参数,用来处理返回的分数,例如,intern
    21.  
      这原本是一个函数,可以放到最后,如果不写,就默认是用float
    22.  
      除了这两个函数外,还有zrevrange 和 zrevrangebyscore 这个一看名称就能知道是做什么用的了
    23.  
      '''
    24.  
      print r.zrange('score', 0, 2, False, True)
    25.  
      print r.zrangebyscore('score', 0, 100, 0, 3, True)
    26.  
       
    27.  
      #如果想获得全部的分数呢,0 到-1就可以了
    28.  
      print r.zrange('score', 0, -1, False, True)
    29.  
       
    30.  
      #想获得分数高于80分(等于也行)的从小到达排序的前三名,有点绕。。。
    31.  
      print r.zrangebyscore('score', 80, Inf, 0, 3, True)
    32.  
       
    33.  
      #小于某个分数值的表示方法,float('-Inf')表示无穷小
    34.  
      print r.zrangebyscore('score', float('-Inf'), 95, 0, 4, True)
    35.  
       
    36.  
      #现在给某个值加1
    37.  
      print r.zincrby('score', 'peter',1)
    38.  
       
    39.  
      #获得一个有序集合的元素的个数
    40.  
      print r.zcard('score')
    41.  
       
    42.  
      #既然是有序,我们最希望能看到一个元素的分数排名
    43.  
      print '排名'
    44.  
      print r.zrank('score', 'black')
    45.  
      print r.zrevrank('score', 'black')
    46.  
       
    47.  
      #获得一个分数范围内的元素的个数
    48.  
      print r.zcount('score', 78, 93)
    49.  
       
    50.  
      #删除掉一个元素
    51.  
      print r.zrem('socre','peter')
    52.  
       
    53.  
      #按分数区间进行删除
    54.  
      print r.zremrangebyscore('score', 70, 90)
    55.  
       
    56.  
      #分数从小到达排序,然后删除指定排名范围内的数据
    57.  
      print r.zremrangebyrank('score', 0, 2)
posted @ 2020-12-22 19:48  睁yan-ii  阅读(107)  评论(0编辑  收藏  举报