Redis研究-3.7 有序集合中范围以及数学集合运算

1.安装redis-py

因为在类Unix系统上都默认安装了Python,所以,本章节主要看看,怎么样用Python来操作Redis。 要让Python来操作Redis,你先要安装Python的Redis客户端redis-py库,库的github地址是:https://github.com/andymccurdy/redis-py。用git clone https://github.com/andymccurdy/redis-py 即可下载源码。进入下载的源码目录,使用sudo python setup.py install 就可以安装了。

在shell中启动python。 操作:python 结果: Python 2.7.10 (default, Jul 14 2015, 19:46:27) [GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin Type "help", "copyright", "credits" or "license" for more information.

现在,你可以导入redis模块。既可以进行编程操作了。

操作:>>> import redis

建立连接: 操作:>>> conn=redis.StrictRedis(host='localhost', port=6379, db=0)

初始化两个有序集合s-ta和s-tb

conn.zadd('s-ta',2,'b',-2,'c',4,'a') conn.zadd('s-tb',4,'b',1,'c',0,'a')

2. 范围及数据集合操作

2.1 ZREVRANK
解释:返回有序集合中指定成员所处的位置,成员按分值大小来排列的。

操作:conn.zrevrank('s-ta','a')
结果:0
操作:conn.zrevrank('s-ta','b')
结果:1

2.2 ZREVRANGE
解释:返回有序集合中在指定排名范围内的元素。

操作:conn.zrevrange('s-ta',1,2)
结果:['b', 'c']
操作:conn.zrevrange('s-ta',0,1)
结果:['a', 'b']

2.3 ZRANGEBYSCORE 
解释:返回有序集合中,分值在指定范围内的元素。

操作:conn.zrangebyscore('s-ta',1,2)
结果:['b']

2.4 ZREVRANGEBYSCORE
解释:返回有序集合中,分值在指定范围内的元素,并按照分值从大到小排列。注意,要和ZRANGEBYSCORE中指定范围的方式区别开来。

操作:conn.zrevrangebyscore('s-ta',5,-2)
结果:['a', 'b', 'c']

操作:conn.zrevrangebyscore('s-ta',-2,5)
结果:[]

2.5 ZREMRANGEBYRANK
解释:删除有序集合中,分值的排名在指定的范围内是[a,b]的元素
操作:conn.zremrangebyrank('s-ta',0,1)
结果:2
操作:conn.zrange('s-ta',0,-1)
结果:['a']

2.6 ZREMRANGEBYSCORE
解释:和ZREMRANGEBYRANK的操作一样,只不过,他是用分值范围,而不是排名范围。

2.7 ZINTERSTORE(交集)
解释:将多个有序集合中的具有相同的成员进行聚合操作。你可以在操作的时候指定aggregate(聚合,分别有sum,min,max,默认是sum)。
操作:conn.zrange('s-ta',0,-1,withscores=True)
结果:[('a', 4.0), ('b', 10.0)]
操作:conn.zrange('s-tb',0,-1,withscores=True)
结果:[('a', 0.0), ('c', 1.0), ('b', 4.0)]
操作:conn.zrange('s-ti',0,-1,withscores=True)
结果:[]
操作:conn.zinterstore('s-ti',['s-ta','s-tb'])
结果:2L
操作:conn.zrange('s-ti',0,-1,withscores=True)
结果:[('a', 4.0), ('b', 14.0)]
操作:conn.zrange('s-ti-a',0,-1,withscores=True)
结果:[]
操作:conn.zinterstore('s-ti-a',['s-ta','s-tb'],aggregate='min')
结果:2L
操作:conn.zrange('s-ti-a',0,-1,withscores=True)
结果:    [('a', 0.0), ('b', 4.0)]

2.8 ZUNIONSTORE(并集)
解释:将多个有序几个中的所有成员进行聚合操作。你可以在操作的时候指定aggregate(聚合,分别有sum,min,max,默认是sum)。
操作:conn.zrange('s-ti-b',0,-1,withscores=True)
结果:[]
操作:conn.zunionstore('s-ti-b',['s-ta','s-tb'],aggregate='min')
结果:3L
操作:conn.zrange('s-ti-b',0,-1,withscores=True)
结果:[('a', 0.0), ('c', 1.0), ('b', 4.0)]

转载于:https://my.oschina.net/u/197860/blog/525276

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值