CF.SCANDUMP key iterator
Available in:
Redis Stack / Bloom 1.0.0
Time complexity:
O(n), where n is the capacity

Begins an incremental save of the cuckoo filter.

This command is useful for large cuckoo filters that cannot fit into the DUMP and RESTORE model.

The first time this command is called, the value of iter should be 0.

This command returns successive (iter, data) pairs until (0, NULL) indicates completion.

Required arguments


is key name for a cuckoo filter to save.


Iterator value; either 0 or the iterator from a previous invocation of this command

Return value

Returns one of these replies:

  • Array reply of Integer reply (Iterator) and [] (Data).

    The Iterator is passed as input to the next invocation of CF.SCANDUMP. If Iterator is 0, then it means iteration has completed.

    The iterator-data pair should also be passed to CF.LOADCHUNK when restoring the filter.

  • [] on error (invalid arguments, key not found, wrong key type, etc.)


redis> CF.RESERVE cf 8
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"
redis> CF.LOADCHUNK cf 9 "\x00\x00\x00\x00\a\x00\x00\x00"
redis> CF.EXISTS cf item1
(integer) 1

Python code:

chunks = []
iter = 0
while True:
    iter, data = CF.SCANDUMP(key, iter)
    if iter == 0:
        chunks.append([iter, data])

# Load it back
for chunk in chunks:
    iter, data = chunk
    CF.LOADCHUNK(key, iter, data)

Rate this page