2015-12-21 4 views
0

мне нужны все ключи в Redis, соответствующих заданному шаблону: *_xyz_*, то я получаю все свои значения, следуя Python код -Разбиение «КЛЮЧИ» на Redis

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 –

Смежные вопросы