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

爱⌒轻易说出口 提交于 2020-02-29 13:29:29

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)]
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!