美文网首页
redis-ziplist

redis-ziplist

作者: zhangsanzhu | 来源:发表于2018-12-30 22:30 被阅读0次

    ziplist

    使用场景

    redis Hash与List

    压缩列表的存储结构

    struct ziplist<T> {
        int32 zlbytes; // 整个压缩列表占用字节数
        int32 zltail_offset; // 最后一个元素距离压缩列表起始位置的偏移量,用于快速定位到最后一个节点;为了支持双向遍历
        int16 zllength; // 元素个数
        T[] entries; // 元素内容列表,挨个挨个紧凑存储
        int8 zlend; // 标志压缩列表的结束,值恒为 0xFF
    }...
    

    ziplist的结构图:
    zibytes - zltail_offset - zllength - entry - entry - entry - zlend;

    entry 结构图

    struct entry{
        int<var> prevlen; // 前一个 entry 的字节长度
        int<var> encoding; // 元素类型编码
        optional byte[] content; // 元素内容
    }
    

    ziplist总结

    ziplist属于紧凑存储,没有冗余空间,也就意味中每次增加元素都会出发重新分配内存.
    删除中间节点,会导致级联更新.

    老钱: https://juejin.im/book/5afc2e5f6fb9a07a9b362527/section/5b5c95226fb9a04fa42fc3f6

    相关文章

      网友评论

          本文标题:redis-ziplist

          本文链接:https://www.haomeiwen.com/subject/nkqulqtx.html