2011-02-08 114 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