CF.SCANDUMP

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

开始对布谷鸟过滤器进行增量保存。

此命令对于无法容纳于DUMPRESTORE模式的大型布谷鸟过滤器非常有用。

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

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

必需参数

key

是要保存的布谷鸟过滤器的 key 名称。

iterator

迭代器值;为 0 或此命令上次调用返回的迭代器

返回值

返回以下回复之一

  • 数组回复,包含整型回复迭代器)和 [](数据)。

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

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

  • 发生错误时返回 [](参数无效、找不到 key、key 类型错误等)

示例

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)


为此页面评分
回到顶部 ↑