BF.SCANDUMP
BF.SCANDUMP
BF.SCANDUMP key iterator
- Доступно в:
- Redis Stack / Bloom 1.0.0
- Сложность:
- O(n), где n — емкость
Начинает инкрементную сохранение bloom-фильтра. Это полезно для больших bloom-фильтров, которые не помещаются в стандартную модель DUMP и RESTORE.
В первый раз при вызове этой команды значение iter должно быть 0. Команда возвращает последовательные пары (iter, data) до (0, NULL) для обозначения завершения.
Параметры
- key: Имя фильтра
- iter: Значение итератора; либо 0, либо итератор из предыдущего вызова этой команды
Возвращаемое значение
Массивный ответ из целого ответа (Итератор) и [] (Данные). Итератор передаётся в качестве входных данных при следующем вызове SCANDUMP. Если Итератор равен 0, это означает завершение итерации.
Пара итератор-данные также должна быть передана в LOADCHUNK при восстановлении фильтра.
@example
redis> BF.RESERVE bf 0.1 10 OK redis> BF.ADD bf item1 1) (integer) 1 redis> BF.SCANDUMP bf 0 1) (integer) 1 2) "\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x02\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00@\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x9a\x99\x99\x99\x99\x99\xa9?J\xf7\xd4\x9e\xde\xf0\x18@\x05\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x00" redis> BF.SCANDUMP bf 1 1) (integer) 9 2) "\x01\b\x00\x80\x00\x04 \x00" redis> BF.SCANDUMP bf 9 1) (integer) 0 2) "" redis> FLUSHALL OK redis> BF.LOADCHUNK bf 1 "\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x02\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00@\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x9a\x99\x99\x99\x99\x99\xa9?J\xf7\xd4\x9e\xde\xf0\x18@\x05\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x00" OK redis> BF.LOADCHUNK bf 9 "\x01\b\x00\x80\x00\x04 \x00" OK redis> BF.EXISTS bf item1 (integer) 1
код на Python:
chunks = []
iter = 0
while True:
iter, data = BF.SCANDUMP(key, iter)
if iter == 0:
break
else:
chunks.append([iter, data])
# Load it back
for chunk in chunks:
iter, data = chunk
BF.LOADCHUNK(key, iter, data)
© 2006–2022 Salvatore Sanfilippo
Licensed under the Creative Commons Attribution-ShareAlike License 4.0.
https://redis.io/commands/bf.scandump/