2011-02-08 111 views
16

所以我已經閱讀this post關於沒有MGET Redis哈希模擬。其中一個答案表示使用MULTI/EXEC來批量執行操作,但對列表和常規鍵不起作用,但不適用於散列。然而,現在,我正在通過電線爲每一個我想要檢索的散列打電話,這對我來說似乎是個壞消息。在Redis中獲得多個哈希的最有效方法是?

所以我的問題是:什麼是大多數有效的方式來從Redis獲得多個哈希值,效率是網絡調用的最少數量?我正在使用Redis 2.0.4,使用Python客戶端進行編程。謝謝!

回答

31

最有效的方法是使用管道。

假設你想要的一切,對於一個給定的密鑰和已經知道的所有鍵:

import redis 

r = redis.Redis(host='localhost', port=6379, db=0) 
p = r.pipeline() 
for key in keys: 
    p.hgetall(key) 

for h in p.execute(): 
    print h 

有關管道的更多信息可以在這裏找到:http://redis.io/topics/pipelining