CF.SCANDUMP
CF.SCANDUMP
CF.SCANDUMP key iterator
- Доступно в:
- Redis Stack / Bloom 1.0.0
- Временная сложность:
- O(n), где n — ёмкость
Начинает инкрементальную сохранение куку-фильтра. Это полезно для больших куку-фильтров, которые не помещаются в обычную модель DUMP и RESTORE.
В первый раз при вызове этой команды значение iter должно быть 0. Эта команда возвращает последовательные пары (iter, data) до тех пор, пока (0, NULL) не укажет на завершение.
Параметры
- ключ: Имя фильтра
- итератор: Значение итератора. Это либо 0, либо итератор из предыдущего вызова этой команды
Возврат
Массивный ответ из целочисленного ответа (Итератор) и [] (Данные). Итератор передаётся в качестве входных данных для следующего вызова SCANDUMP. Если Итератор равен 0, то это означает, что итерация завершена.
Пара итератор-данные также должна быть передана в LOADCHUNK при восстановлении фильтра.
@exmaples
redis> CF.RESERVE cf 8 OK redis> CF.ADD cf item1 (integer) 1 redis> CF.SCANDUMP cf 0 1) (integer) 1 2) "\x01\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02\x00\x14\x00\x01\x008\x9a\xe0\xd8\xc3\x7f\x00\x00" redis> CF.SCANDUMP cf 1 1) (integer) 9 2) "\x00\x00\x00\x00\a\x00\x00\x00" redis> CF.SCANDUMP cf 9 1) (integer) 0 2) (nil) redis> FLUSHALL OK redis> CF.LOADCHUNK cf 1 "\x01\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02\x00\x14\x00\x01\x008\x9a\xe0\xd8\xc3\x7f\x00\x00" OK redis> CF.LOADCHUNK cf 9 "\x00\x00\x00\x00\a\x00\x00\x00" OK redis> CF.EXISTS cf item1 (integer) 1
код python:
chunks = []
iter = 0
while True:
iter, data = CF.SCANDUMP(key, iter)
if iter == 0:
break
else:
chunks.append([iter, data])
# Load it back
for chunk in chunks:
iter, data = chunk
CF.LOADCHUNK(key, iter, data)
© 2006–2022 Salvatore Sanfilippo
Licensed under the Creative Commons Attribution-ShareAlike License 4.0.
https://redis.io/commands/cf.scandump/