python操作redis的有序集合

# coding=utf-8  
''''' 
Created on 2015-9-18 
 
@author: Administrator 
'''  
import redis  
from idlelib.IOBinding import encoding  
from pip.utils import Inf  
pool=redis.ConnectionPool(host='192.168.1.106',port=6379,db=0)  
r = redis.StrictRedis(connection_pool=pool)  
#我们先加入5条数据  
p = r.pipeline()  
p.zadd('score',90.9,'peter',95,'white',80,'black',70,'tom',100,'sheng')  
p.execute()  
  
#接下来,我们查询一个人的分数,注意,我们存储的时候写入的整数  
#其实redis里存储的也是整数,但python取出来后就变成了float  
print r.zscore('score', 'peter')  
  
''''' 
下面两个函数返回相同的结果,但使用方式是不一样的 
zrange 的第2个和第3个参数表示第几行到第几行,zrangebyscore 的第2个和第3个表示从哪个分数范围内 
取值,第4个参数表示从第几行开始取,第5个参数表示取几个值回来 
zrange的第四个参数表示降序还是升序 
最后一个参数为True表示带分数返回,其实最后面还可以写一个参数,用来处理返回的分数,例如,intern 
这原本是一个函数,可以放到最后,如果不写,就默认是用float 
除了这两个函数外,还有zrevrange 和  zrevrangebyscore 这个一看名称就能知道是做什么用的了 
'''  
print r.zrange('score', 0, 2, False, True)  
print r.zrangebyscore('score', 0, 100, 0, 3, True)  
  
#如果想获得全部的分数呢,0 到-1就可以了  
print r.zrange('score', 0, -1, False, True)  
  
#想获得分数高于80分(等于也行)的从小到达排序的前三名,有点绕。。。  
print r.zrangebyscore('score', 80, Inf, 0, 3, True)  
  
#小于某个分数值的表示方法,float('-Inf')表示无穷小  
print r.zrangebyscore('score', float('-Inf'), 95, 0, 4, True)  
  
#现在给某个值加1  
print r.zincrby('score', 'peter',1)  
  
#获得一个有序集合的元素的个数  
print r.zcard('score')  
  
#既然是有序,我们最希望能看到一个元素的分数排名  
print '排名'  
print r.zrank('score', 'black')  
print r.zrevrank('score', 'black')  
  
#获得一个分数范围内的元素的个数  
print r.zcount('score', 78, 93)  
  
#删除掉一个元素  
print r.zrem('socre','peter')  
  
#按分数区间进行删除  
print r.zremrangebyscore('score', 70, 90)  
  
#分数从小到达排序,然后删除指定排名范围内的数据  
print r.zremrangebyrank('score', 0, 2)

 

关于Zeno Chen

本人涉及的领域较多,杂而不精 程序设计语言: Perl, Java, PHP, Python; 数据库系统: MySQL,Oracle; 偶尔做做电路板的开发,主攻STM32单片机
此条目发表在NoSQL, Python分类目录。将固定链接加入收藏夹。