全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

详解redis数据结构之压缩列表

 详解redis数据结构之压缩列表

redis使用压缩列表作为列表键和哈希键的底层实现之一。当一个列表键只包含少量的列表项,并且每个列表项都是由小整数值或者是短字符串组成,那么redis就会使用压缩列表存储列表项;同理,当一个哈希表包含的键值对都是由小整数值或者是短字符串组成,并且存储的键值对数目不多时,redis也会使用压缩列表来存储哈希表。以下是压缩列表存储结构:

 

  • zlbytes长度为4个字节,记录了整个压缩列表所占用的字节数
  • zltail长度为4个字节,记录了压缩列表起始位置到压缩列表尾节点的偏移量
  • zllen长度为2个字节,记录了当前压缩列表中所拥有的entry的数量
  • entryX存储了实际的对象,其长度根据具体的实体而定
  • zlend长度为1个字节,保存了十进制的255,用于标记压缩列表的末端

      通过上面的结构可以看出,压缩列表存储数据的为一整个数组,在这个数组中前12个字节固定保存了zlbytes、zltail和zllen三个表征整个压缩列表属性的数据,而后续的数组则保存了entry的数组,最后通过一个字节长度的属性zlend来记录当前压缩列表已经结束。

      在上述结构中,我们并没有看到任何属性用以表征每个entry的长度及其存储的数据类型,如字符串或者是整型值,而压缩列表整体其实是一个数组,因而如果不对这两个类型的数据进行记录那么将无法对每一个entry进行区分。实际上,每个entry是由三部分组成:previous_entry_length、encoding和content。

1.previous_entry_length为一个整型值,记录了前一个节点整体占用字节的长度,当前一个节点的长度小于254时,该属性占用一个字节,当前一个节点长度大于等于254时,该属性则占用5个字节,其第一个字节会保存十进制的0xFE,即十进制的254,后四个字节则保存了前一节点的长度;

2.encoding属性长度不定,其主要保存了当前节点的编码格式和节点的长度。当encoding属性的最高两位为00、01或10时,表示其存储的是字节数组。其为00时,encoding占用1个字节,其后6位保存了content属性的长度;为01时,encoding占用2个字节,其后14位保存了content属性的长度;为10时,则其后38位保存了content属性的长度。当encoding属性的最高两位为11时,表示其存储的是一个整型值,并且此时encoding属性的长度为1个字节。当11后两位,也即第三位和第四位为00时,表示存储的是int16_t类型的整数,当其为01时,表示存储的是int32_t类型的整数,当其为10时,表示存储的是int64_t类型的整数,当其为11时,表示存储的是24位有符号整数。(这四种情况后续位上的值都为0)当11后五位为1,并且最后一位为0时,表示存储的是8位有符号整数。当11后两位为11时,那么该节点就没有content属性,该节点的属性值保存在encoding属性的后四个位上,并且其值要介于0~12之间。

3.content属性保存了该节点的实际的字符串或整型数据。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# redis数据结构之压缩列表  # redis数据结构之压缩列表详解  # Redis的六种底层数据结构(小结)  # 多维度深入分析Redis的5种基本数据结构  # redis数据结构之intset的实例详解  # Redis中5种数据结构的使用场景介绍  # redis中跳表zset的具体使用  # redis使用skiplist跳表的原因解析  # 为何Redis使用跳表而非红黑树实现SortedSet  # Redis中的数据结构跳表详解  # 的是  # 存了  # 两位  # 长度为  # 是由  # 其为  # 或者是  # 整型  # 键值  # 是一个  # 就会  # 也会  # 第一个  # 在这  # 这两个  # 数据结构  # 希望能  # 可以看出  # 谢谢大家  # 而定 


相关文章: 香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  如何快速搭建高效简练网站?  宁波自助建站系统如何快速打造专业企业网站?  建站主机服务器选购指南:轻量应用与VPS配置解析  建站之星北京办公室:智能建站系统与小程序生成方案解析  测试制作网站有哪些,测试性取向的权威测试或者网站?  如何通过WDCP绑定主域名及创建子域名站点?  c# F# 的 MailboxProcessor 和 C# 的 Actor 模型  C#如何序列化对象为XML XmlSerializer用法  如何做静态网页,sublimetext3.0制作静态网页?  官网网站制作腾讯审核要多久,联想路由器newifi官网  如何在Windows环境下新建FTP站点并设置权限?  南阳网站制作公司推荐,小学电子版试卷去哪里找资源好?  如何在Golang中引入测试模块_Golang测试包导入与使用实践  如何零成本快速生成个人自助网站?  如何在云服务器上快速搭建个人网站?  建站上市公司网站建设方案与SEO优化服务定制指南  如何使用Golang table-driven基准测试_多组数据测量函数效率  正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好?  家庭建站与云服务器建站,如何选择更优?  C#怎么使用委托和事件 C# delegate与event编程方法  美食网站链接制作教程视频,哪个教做美食的网站比较专业点?  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  北京网站制作的公司有哪些,北京白云观官方网站?  广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?  免费网站制作模板下载,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的?  网站制作员失业,怎样查看自己网站的注册者?  建站之星多图banner生成与模板自定义指南  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  如何安全更换建站之星模板并保留数据?  清除minerd进程的简单方法  如何打造高效商业网站?建站目的决定转化率  如何选择域名并搭建高效网站?  如何快速上传建站程序避免常见错误?  建站之星安装需要哪些步骤及注意事项?  ,购物网站怎么盈利呢?  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  外贸公司网站制作,外贸网站建设一般有哪些步骤?  如何通过远程VPS快速搭建个人网站?  建站之星展会模板:智能建站与自助搭建高效解决方案  如何在万网主机上快速搭建网站?  建站之星如何助力网站排名飙升?揭秘高效技巧  ,想在网上投简历,哪几个网站比较好?  如何基于云服务器快速搭建个人网站?  如何在Ubuntu系统下快速搭建WordPress个人网站?  专业网站建设制作报价,网页设计制作要考什么证?  如何通过老薛主机一键快速建站?  制作网站的软件免费下载,免费制作app哪个平台好?  招商网站制作流程,网站招商广告语? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。