Redis的底层数据结构-压缩列表

技术Redis的底层数据结构-压缩列表 Redis的底层数据结构-压缩列表压缩列表(ziplist)是Redis为了节省内存而开发的,是由一系列特殊编码的连续内存块组成的顺序型数据结构,一个压缩列表可以

Redis压缩列表的底层数据结构

Redis为节省内存而开发的压缩列表,是由一系列经过特殊编码的连续内存块组成的顺序数据结构。压缩列表可以包含任意数量的条目,每个条目可以包含一个字节数组或一个整数值。

压缩列表的原理:压缩列表并不是对数据利用某种算法进行压缩,而是将数据按照一定规则编码在一块连续的内存区域,目的是节省内存。

压缩列表的每个节点组成如下:

Previous _ entry _ engage:记录压缩列表中前一个字节的长度。previous _ entry _ engage的长度可以是1字节或5字节。如果前一个节点的长度小于254,则只需要一个字节来表示前一个节点的长度。如果前一个节点的长度大于或等于254,则previous_entry_ength的第一个字节是254,后面是四个字节,表示当前节点的前一个节点的长度。利用这个原理,即从当前节点位置减去前一个节点的长度就可以得到前一个节点的起始位置,压缩后的列表就可以从尾部遍历到头部。这有效地减少了内存的浪费。

编码:节点的编码存储节点内容的内容类型和长度。有两种编码类型,一种是字节数组,另一种是整数。编码区长度为1字节、2字节或5字节。

内容:内容区用于存储节点的内容,内容的类型和长度:内容由编码决定。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/81994.html

(0)

相关推荐

  • 小白点,人的面部出现小白点是怎么回事

    技术小白点,人的面部出现小白点是怎么回事先说说脂肪粒的产生 1、 体内原因:眼部、面部出现油脂粒大多是由于近期身体内分泌有些失调小白点,致使面部油脂分泌过剩,再加上皮肤没有得到彻底清洁干净,导致毛孔阻塞,很快形成脂肪粒。

    生活 2021年10月25日
  • AIO与NIO的实际区别是什么

    技术AIO与NIO的实际区别是什么本篇内容主要讲解“AIO与NIO的实际区别是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“AIO与NIO的实际区别是什么”吧!1. NI

    攻略 2021年11月15日
  • go module是如何使用本地包的

    技术go module是如何使用本地包的小编给大家分享一下go module是如何使用本地包的,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!g

    攻略 2021年11月27日
  • 火柴英文,火柴有哪几种,例如防水火

    技术火柴英文,火柴有哪几种,例如防水火日用火柴(普通火柴)日用火柴 按包装外形和所用原料有木梗火柴火柴英文、蜡纸梗火柴和书式火柴3种。①木梗火柴:用质地比较松软的木材制成方形截面的火柴梗,梗端沾上石蜡和药浆,干燥后装于木

    2021年10月26日
  • apachesuperset权限控制(apachesuperset使用方法)

    技术如何进行Apache Superset远程代码执行漏洞如何进行Apache Superset远程代码执行漏洞,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,

    攻略 2021年12月21日
  • 怎么解决Java中Unexpected Exception报错问题

    技术怎么解决Java中Unexpected Exception报错问题这篇文章主要讲解了“怎么解决Java中Unexpected Exception报错问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的

    攻略 2021年11月16日