BF.SCANDUMP

语法
BF.SCANDUMP key iterator
可用版本
Redis Open Source / Bloom 1.0.0
时间复杂度
O(n),其中 n 是容量
ACL 类别
@bloom, @write, @slow,

开始对 Bloom 过滤器进行增量保存。

此命令对于无法适应 DUMPRESTORE 模型的大型 Bloom 过滤器非常有用。

第一次调用此命令时,iter 的值应为 0。

此命令返回连续的 (iter, data) 对,直到返回 (0, NULL) 表示完成。

必需参数

key

要保存的 Bloom 过滤器的键名。

iterator

迭代器值;要么是 0,要么是之前调用此命令时返回的迭代器

返回值

返回以下回复之一

  • 数组回复,包含整数回复 (Iterator) 和 [] (Data)。

    迭代器作为输入传递给下一次调用 BF.SCANDUMP。如果 Iterator 为 0,则表示迭代已完成。

    在恢复过滤器时,迭代器-数据对也应传递给 BF.LOADCHUNK

  • [] 在发生错误时返回(参数无效、键不存在、键类型错误等)。

示例

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> DEL bf
(integer) 1
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)


评价此页面
返回顶部 ↑