Redis的ZipList和QuickList和SkipList和RedisObject(未完成)

news/2024/11/7 10:59:18/

ZipList:压缩列表,为了节省内存而设计的一种数据结构

ZipList是一种特殊的双端链表,是由一系列的特殊编码的连续内存块组成,不需要通过指针来进行寻址来找到各个节点,可以在任意一端进行压入或者是弹出操作,并且该操作的时间复杂度是O(1);

dict底层是依靠依靠哈希表来实现的,虽然查询性能比较高,但是一个指针要占用8个字节,大量使用指针寻址(因为内存不连续,要通过指针寻址)会浪费内存,况且这种链式存储方式极其容易产生内存碎片;

因为在压缩列表中,存放不同的数据所占用的内存是不一样的Entry值越大,占用字节数越大

在ZipList中,Entry并不像普通链表一样进行记录前后点的指针,因为每记录两个指针要占用16个字节,浪费内存,而是使用了下面的结构

1)previous_entry_length:前一个结点的长度,占用1个字节或者是5个字节

1.1)如果前一个结点的长度小于254个字节,那么就采用1个字节来保存这个长度值;

1.2)如果前一个结点的长度大于254个字节,那么就采用5个字节来保存这个长度的值,第一个字节是OXFE,后四个字节才是真实的长度数据;

2)encoding:编码属性,记录content的数据类型字符串还是整数以及长度,Encoding本身的长度占用1个,2个或者是5个字节,况且只是存在这两个值

ZipListEntry中的encoding编码分为字符串和整数两种

1)字符串:如果Encoding是以00或者01或者是10来进行开头的那么证明content是字符串类型下面的p和q是用来记录字符串的长度的;

 假设现在要保存"ab"和"bc"这两个字符串

第一部分是表示前一个字符串的长度,第二部分是表示采用00编码,并且所存储的字符串长度是4,第三部分是实际存储的字符串的ASCIL值;

 

 整个压缩列表的结构:

 2)整数:如果encoding是以11开头,那么就证明content是整数,况且encoding固定只是使用1个字节,来记录四种字节数

 

 

 

 

 

 


http://www.ppmy.cn/news/99992.html

相关文章

【华为OD机试 2023 B卷 | 100分】IPv4地址转换成整数(C++ Java JavaScript Python)

文章目录 题目描述输入描述输出描述用例CjavajavaScriptpython 题目描述 存在一种虚拟IPv4地址,由4小节组成,每节的范围为0~255,以#号间隔,虚拟IPv4地址可以转换为一个32位的整数,例如: 128#0#255#255&am…

SpringMVC框架面试专题(初级-中级)-第十节

欢迎大家一起探讨~如果可以帮到大家请为我点赞关注哦~ 截止到本节关于SpringMVC的内容已经更新完毕,后续会更新SpringBoot框架的面试题;大家在背题的时候切记不要死记硬背,需要理解 这是什么?有什么操作&a…

跑通NeRF-SLAM代码记录

前言 Install 原文章github链接 下载代码 git clone https://github.com/ToniRV/NeRF-SLAM.git --recurse-submodules git submodule update --init --recursive因为有相关依赖,所以尽量使用命令下载代码。 2. 新建nerf-slam环境,github上也没提到p…

OpenCV基础操作(5)图像平滑、形态学转换、图像梯度

import numpy as np import cv2 as cv from matplotlib import pyplot as plt一、图像平滑 1、2D卷积 我们可以对 2D 图像实施低通滤波(LPF),高通滤波(HPF)等。 LPF 帮助我们去除噪音,模糊图像。HPF 帮助…

我用GPT写了一个关于GPT的文章,大家看看写的如何

声明:以下内容来自GPT-3.5大模型(图片除外) 目录 I. 引言 1.1 研究背景和意义 1.2 现有研究综述 II. ChatGPT技术介绍 2.1 ChatGPT技术原理 2.2 ChatGPT技术优势 III. ChatGPT技术在智能客服中的应用和挑战 3.1 ChatGPT技术在智能客…

TOWER 成就徽章 NFT 系列介绍——TOWER 生态系统的第一个灵魂通证(SBT)

2022 年 7 月,团队推出了成就徽章 NFT 系列,记录每个成员在 TOWER 生态系统中的努力。这是第一个不可转让的灵魂 NFT 系列(SBT),代表了每个玩家的独特身份。 关于灵魂通证(SBT) 以太坊联合创始人…

剑指 Offer 12 矩阵中的路径

题目: 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那…

Window的创建

Window的创建 上一篇说到了Window和WindowManager的关系并且讲述了WindowManager如何添加Window与Window内部的三个方法的实现 这篇主要讲几个常见的Window的创建比如Activity,Dialog和Toast 其中Activity属于应用Window Dialog属于子Window Toast属于系统Window z-order…