• antirez's avatar
    Streams: delta encode IDs based on key. Add count + deleted fields. · f24d3a7d
    antirez authored
    We used to have the master ID stored at the start of the listpack,
    however using the key directly makes more sense in order to create a
    space efficient representation: anyway the key at the radix tree is very
    unlikely to change because of how the stream is implemented. Moreover on
    nodes merging, to rewrite the merged listpacks is anyway the most
    sensible operation, and we can use the iterator and the append-to-stream
    function in order to avoid re-implementing the code needed for merging.
    
    This commit also adds two items at the start of the listpack: the
    number of valid items inside the listpack, and the number of items
    marked as deleted. This means that there is no need to scan a listpack
    in order to understand if it's a good candidate for garbage collection,
    if the ration between valid/deleted items triggers the GC.
    f24d3a7d
rdb.c 79.9 KB