数据结构与对象----------06压缩列表

  • zlbytes:占4个字节,记录整个压缩列表占用的内存字节数。
  • zltail_offset:占4个字节,记录压缩列表尾节点entryN距离压缩列表的起始地址的字节数。
  • zllength:占2个字节,记录了压缩列表的节点数量。
  • entry[1-N]:长度不定,保存数据。
  • zlend:占1个字节,保存一个常数255(0xFF),标记压缩列表的末端。

假设这是一个压缩列表的头两个节点,因此:

  • 第一个节点信息: 
    • prev_entry_len成员为0,占1字节空间,因为前驱节点长度为0,小于254。
    • encoding成员为0000 0101,最高两位为00,因此encoding占1个字节且可以算出value为字符数组,根据剩下的6位00 0101,可以算出value长度为5字节。
    • value成员根据encoding成员算出长度为5字节,因此,会读5个字节的字节数组,值为”Redis”。
  • 第二个节点信息: 
    • prev_entry_len成员为0x07,占一个字节,因为前驱节点长度为7,小于254。
    • encoding成员编码为1101 0000,最高两位为11,因此encoding占1个字节且可以算出value为整数,在根据encoding编码可以得出value值为占32位,4个字节int32_t类型的有符号整数。
    • value成员根据encoding编码,读出4个字节的整数,值为 1234。
  • 压缩列表的表头信息: 
    • zlbytes为整个压缩列表所占字节数24。
    • zltail_offset为从压缩列表的首地址到最后一个entry节点的偏移量17。
    • zlength为节点个数2。
    • zlend为常数255(0xFF)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值