2015-12-21 33 views
0

我需要redis的匹配给定模式的所有按键:*_xyz_*,然后我按照蟒蛇代码获得他们的所有值: -分页“钥匙”命令

def get_keys(self,pattern): 
    self.r_prod.keys(pattern); 
    keys = self.r_prod.execute(); 

    for i in keys[0]: 
     self.r_prod.get(i); 
    return self.r_prod.execute(); 

现在keys是相当巨大,以保持所有的记忆。所以,我想知道是否有任何方法来分页键调用一定的限制?

+1

您需要使用'scan'用于此目的。 http://redis.io/commands/scan –

+0

@JoeDoherty谢谢! –

回答

2

使用SCAN命令:

>>> import redis 
>>> r = redis.Redis() 
>>> for x in r.scan_iter('dummy*'): 
... print(x) 
... 
b'dummy3' 
b'dummy2' 
b'dummy1' 
+0

谢谢,但可以在管道中扫描吗?或者更准确地说,扫描命令对于每次迭代都需要一个TCP连接,或者隐式创建一个管道? –

+0

好吧,我的答案,它会在每次迭代时创建一个新的调用,但我可以限制迭代:https://github.com/andymccurdy/redis-py/blob/master/redis/client.py#L1372 –