redis ziplist

Redis中的ziplist是列表和哈希键的底层实现之一,适用于小数据量、短字符串场景。ziplist包含zlbytes、zltail、zlen等字段记录结构信息,每个节点由previous_entry_length、encoding和content组成。当节点长度超过254字节时,会导致连锁更新,影响所有后续节点的previous_entry_length,可能导致频繁的内存分配。
摘要由CSDN通过智能技术生成

1. ziplist用途

是列表键(list)和哈希键(hash)的主要底层的实现之一,当一个列表键只包含少量的列表项 并且每个列表项要么就是小整数值 要么就是长度比较短的字符串,那么redis就是会使用压缩列表做列表键的底层实现

2.压缩列表

2.1 压缩列表的结构

ziplist

  • zlbytes uint32_t 记录压缩列表占用的字节数,在对压缩列表进行内存的重分配或者计算zlend的时候使用
  • zltail uint32_t 记录压缩列表表尾节点(entryN)距离压缩列表其实地址的偏移量 即通过起始地址+zltai 可以得到表尾节点的位置
  • zlen uint16_t 记录压缩列表所拥有的节点的数量 当这个值小于UINT16_MAX(65535)时候表示的是节点的数量 如果是等于这个值那么具体的数量就要通过遍历获取
  • entryx 列表节点
  • zlend uint8_t 特殊值0xFF 用来标记压缩列表的结束

2.2 压缩列表节点的构成ziplistNode

  • previous_entry_lengt

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值