CF.SCANDUMP
语法
CF.SCANDUMP key iterator
- 可用版本
- Redis Stack / Bloom 1.0.0
- 时间复杂度
- O(n),其中 n 是容量
开始对布隆过滤器进行增量保存。
此命令适用于无法容纳在 DUMP
和 RESTORE
模型中的大型布隆过滤器。
第一次调用此命令时,iter
的值应为 0。
此命令返回连续的 (iter, data)
对,直到 (0, NULL)
表示完成。
必需参数
key
是要保存的布隆过滤器的键名称。
迭代器
迭代器值;0 或之前调用此命令的迭代器。
返回值
返回以下答复之一
-
迭代器作为输入传递给
CF.SCANDUMP
的下一次调用。如果迭代器为 0,则表示迭代已完成。迭代器-数据对还应传递给
CF.LOADCHUNK
,以便在还原过滤器时使用。 -
[] 表示错误(无效参数、键未找到、键类型错误等)
示例
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> DEL bf
(integer) 1
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)