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 就能夠安裝了。python

在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.git

如今,你能夠導入redis模塊。既能夠進行編程操做了。github

操做:>>> import redisredis

創建鏈接: 操做:>>> conn=redis.StrictRedis(host='localhost', port=6379, db=0)shell

初始化兩個有序集合s-ta和s-tb編程

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

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)]
相關文章
相關標籤/搜索