Python客戶端redis-py
因為本書主要使用Java語言作為編程語言,所以對Python的客戶端redis-py不會太詳細(xì)介紹俭缓,主要介紹以下幾個方面:
- 獲取redis-py
- redis-py的基本使用方法
- redis-py的Pipeline的使用
- redis-py的Lua腳本使用
-
獲取redis-py
Redis官網(wǎng)提供了很多Python語言的客戶端
( http://redis.io/clients#python ),但最被廣泛認(rèn)可的客戶端是
redis-py酥郭。redis-py需要Python2.7以上版本祠乃,有關(guān)Python的安裝這里不會介
紹狰域,主要介紹一下如何獲取安裝redis-py栖博,方法有三種:- 第一获洲,使用pip進行安裝:
pip install redis
- 第二额港,使用easy_install進行安裝:
easy_install redis
- 第三扛施,使用源碼安裝:以2.10.5版本為例子進行說明漓穿,只需要如下四步:
wget https://github.com/sndymccurdy/redis-py/archive/2.10.5.zip unzip redis-2.10.5.zip cd redis-2.10.5 # 安裝 redis-py python setup.py install
-
redis-py的基本使用方法
redis-py的使用方法也比較簡單枷餐,下面將逐步介紹坷衍。
1)導(dǎo)入依賴庫:
import redis
2)生成客戶端連接:需要Redis的實例IP和端口兩個參數(shù):
client = redis.StrictRedis(host='127.0.0.1', port=6379)
3)執(zhí)行命令:redis-py的API保留了RedisAPI的原始風(fēng)格寝优,所以使用起來不會有
不習(xí)慣的感覺:# True client.set(key, "python-redis") # world client.get(key)
下面代碼給出redis-py操作Redis五種數(shù)據(jù)結(jié)構(gòu)的實例,輸出結(jié)果寫在注釋中:
#1.string #輸出結(jié)果:True client.set("hello", "world") #輸出結(jié)果:world client.get("hello") #輸出結(jié)果 1 clinet.incr("counter") #2.hash client.hset("myhash", "f1", "v1") client.hset("myhash", "f2", "v2") #輸出結(jié)果:{'f1': 'v1', 'f2': 'v2'} client.hgetall("myhash") #3.list client.rpush("mylist", "1") client.rpush("mylist", "2") client.rpush("mylist", "3") #輸出結(jié)果:['1', '2', '3'] client.lrange("mylist", 0, -1) #4.set client.sadd("myset", "a") clinet.sadd("myset", "b") client.sadd("myset", "a") #輸出結(jié)果:set(['a', 'b']) client.smembers("myset") #5.zset client.zadd("myzset", "99", "tom") client.zadd("myzset", "66", "peter") client.zadd("myzset", "33", "james") #輸出結(jié)果:[('james", 33.0), ('peter', 66.0), ('tom', 99.0)] client.zrange("myzset", 0, -1, withscores=True)
-
redis-py中Pipeline的使用方法
redis-py支持Redis的Pipeline功能枫耳,下面用一個簡單的示例進行說明乏矾。
1)引入依賴,生成客戶端連接:
import redis client = redis.StrictRedis(host='127.0.0.1', port=6379)
2)生成Pipeline:注意client.pipeline包含了一個參數(shù)迁杨,如果
transaction=False代表不使用事務(wù):pipeline = client.pipeline(transaction=False)
3)將命令封裝到Pipeline中钻心,此時命令并沒有真正執(zhí)行:
pipeline.set("hello", "world") pipeline.incr("counter")
4)執(zhí)行Pipeline:
#[True, 3] result = pipeline.execute()
下面將用redis-py的Pipeline實現(xiàn)mdel功能:
import redis def mdel( keys ): client = redis.StrictRedis(host='127.0.0.1', port=6379) pipeline = client.pipeline(transaction=False) for key in keys: print pipeline.delete(key) return pipeline.execute();
-
redis-py中的Lua腳本使用方法
redis-py中執(zhí)行Lua腳本和redis-cli十分類似,redis-py提供了三個重要的函
數(shù)實現(xiàn)Lua腳本的執(zhí)行:eval(String script, int keyCount, String... params) script_load(String script) evalsha(String sha1, int keyCount, String... params)
eval函數(shù)有三個參數(shù):分別是:
- script:Lua腳本內(nèi)容
- keyCount:鍵的個數(shù)
- params:相關(guān)參數(shù)KEYS和ARGV
script_load和evalsha函數(shù)要一起使用铅协,首先使用script_load將腳本加載到
Redis中捷沸,然后evalsha函數(shù)用來執(zhí)行腳本的哈希值,它需要三個參數(shù):- scriptSha:腳本的SHA1狐史。
- keyCount:鍵的個數(shù)痒给。
- params:相關(guān)參數(shù)KEYS和ARGV。