redis 从0到1完整学习 (八):QuickList 数据结构

文章目录

  • 1. 引言
  • 2. redis 源码下载
  • 3. quickList 数据结构
    • 3.1 整体
    • 3.2 数据结构
  • 4. 参考


1. 引言

前情提要:
《redis 从0到1完整学习 (一):安装&初识 redis》
《redis 从0到1完整学习 (二):redis 常用命令》
《redis 从0到1完整学习 (三):redis 数据结构》
《redis 从0到1完整学习 (四):字符串 SDS 数据结构》
《redis 从0到1完整学习 (五):集合 IntSet 数据结构》
《redis 从0到1完整学习 (六):Hash 表数据结构》
《redis 从0到1完整学习 (七):ZipList 数据结构》

本文主要结合源码来介绍 QuickList 的数据结构

2. redis 源码下载

Redis 源码可以点击这里下载,方便查看其中定义的一些数据结构。
在这里插入图片描述

3. quickList 数据结构

3.1 整体

quickList 是 Redis 中用于实现 list 数据结构的一种特殊数据结构,它在Redis 3.2版本之后被引入。quickList 结合了 zipList 和 linkedList 的特性,将多个 zipList 通过双向链表连接起来,从而实现了高效的内存压缩和快速的读写操作。相比于传统的 linkedList,quickList 在内存使用上更加紧凑,可以存储更多的元素,同时由于 ziplist 的特性,读写操作的时间复杂度为O(1),效率更高。

quickList 的数据结构示意图如下:
在这里插入图片描述
(1)限制 zipList entry 数量:
quickList 限制 zipList 中 entry 过多,redis 提供了一个配置项:list-max-ziplist-size 来限制。
如果值为正,则代表 zipList 允许的 entry 个数的最大值;
如果值为负,则代表 zipList 的最大内存大小,分5种情况:

  • -1:每个 zipList 的内存占用不能超过4kb
  • -2:每个 zipList 的内存占用不能超过8kb,默认值
  • -3:每个 zipList 的内存占用不能超过16kb
  • -4:每个 zipList 的内存占用不能超过32kb
  • -5:每个 zipList 的内存占用不能超过64kb

(2)对 zipList 节点压缩:
通过配置项:list-compress-depth。

  • 0:不压缩
  • n:quickList 首尾各有n个节点不压缩,中间节点压缩

3.2 数据结构

数据结构如下:
在这里插入图片描述
在这里插入图片描述
数据结构示意图如下:
在这里插入图片描述

4. 参考

《redis 从0到1完整学习 (一):安装&初识 redis》
《redis 从0到1完整学习 (二):redis 常用命令》
《redis 从0到1完整学习 (三):redis 数据结构》
《redis 从0到1完整学习 (四):字符串 SDS 数据结构》
《redis 从0到1完整学习 (五):集合 IntSet 数据结构》
《redis 从0到1完整学习 (六):Hash 表数据结构》
《redis 从0到1完整学习 (七):ZipList 数据结构》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/576885.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java非对称加解密

简介 非对称加密:加密和解密使用不同的秘钥的加解密方法。一般的,用公钥做加密,私钥做解密使用 常用的加解密有:RSA、ECC、DSA,在java中使用最多的是RSA 工具类 /*** 非对称加解密工具类(RSA)** RSA加密(一次)有最…

浅谈ASJ系列剩余电流动作继电器

1. 概述 Overview 在工业应用中,剩余电流继电器与外部剩余电流互感器结合使用以检测和评估接地故障电流。它们也可以与保护装置结合使用,以实现电路的断开,从而实现对线路和人员的保护。 Residual current relay can be combined with ext…

C# SqlSugar 数据库 T4模板

生成效果 模板代码 <# template debug"false" hostspecific"true" language"C#" #> <# output extension".cs" #> <# assembly name"System.Core" #> <# assembly name"System.Data" #>…

matlab一本通 学习笔记三

图形步骤&#xff1a;生成自变量&#xff0c;根据函数产生结果向量&#xff0c;利用figure生成窗口&#xff0c;使用plot生成图形&#xff0c;设置轴&#xff0c;设置标记&#xff0c;使用r,g,y,b等设置颜色&#xff0c;使用x.-ov标识线型&#xff1b;使用position在figure中设…

PFA聚四氟乙烯镊子耐强腐蚀可夹取太阳能硅片等

PFA镊子是一种高纯度聚四氟乙烯制成的实验室工具&#xff0c;具有以下特点&#xff1a; 1.高耐腐蚀性&#xff1a;PFA镊子能够抵抗酸、碱、盐等多种化学物质的侵蚀&#xff0c;适用于处理各种强腐蚀性物质。 2. 高耐高温性&#xff1a;PFA镊子的熔点较高&#xff0c;能够在高温…

QT-quick 学习整理

1、特点 Qt Quick是一个现代化的、基于QML的框架。 ● QML是Qt Quick的关键组成部分&#xff0c;是一种基于JavaScript的声明性语言&#xff0c;用于描述用户界面的视觉和行为。 ● Qt Quick Controls是一套预先设计好的用户界面元素库&#xff0c;包含了诸如按钮、文本框、菜…

【MySQL】复合查询 | 内外连接

文章目录 一、MySQL复合查询基本查询回顾多表查询自连接子查询单行子查询多行子查询多列子查询在from子句中使用子查询合并查询 二、MySQL内外连接内连接外连接左外连接右外连接 一、MySQL复合查询 基本查询回顾 准备测试表 下面给出三张表&#xff0c;员工表&#xff08;emp&…

又一款 AI 工具火爆全网!DomoAI 实测体验如何(二)

上一篇介绍了 DomoAI 的两种生成视频的方式&#xff1a; 1、根据上传的视频生成多种风格的视频 2、根据上传的图片生成视频 下图就是通过 DomoAI 生成的一组视频。 DomoAI测试视频 对制作过程感兴趣的可以看上一篇&#xff1a; 程序员X小鹿&#xff1a;【AI 视频】又一款 AI…

std::string在 Windows MSVC和Linux Gcc 中capacity容量扩容策略的分析和对比

1、capacity()作用 在std::string中&#xff0c;capacity()为当前string占用内存字符的长度&#xff0c;表示当前string的容量&#xff0c;可以理解为一个预分配制度&#xff0c;如果当前的string不断进行扩展操作&#xff0c;则不需要每次都进行内存上的分配&#xff0c;提高程…

【银行测试】银行金融项目测试总结+面试题汇总(答案)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、银行项目测试的…

人型动画足部IK权重曲线烘焙

简介 如下图所示&#xff0c;Left、Right FootIK Weight两条动画曲线用于设置人物角色足部IK时获取权重值&#xff0c;手动编辑且动画片段较多时比较费事&#xff0c;可以考虑程序化烘焙这两条足部IK权重曲线。 实现思路 创建新的编辑器窗口&#xff0c;在OnGUI中获取当前所…

FART12刷机脱壳记录笔记

其他脱壳笔记&#xff1a; https://codeooo.blog.csdn.net/article/details/126891503 fart12 脱壳系统 可以脱邦邦 爱加密 企业壳 等&#xff1b; 寒冰大佬的脱壳王 本文记录下刷机过程&#xff0c;方便以后查看使用。 adb授权和ome锁要开着 代表锁是开着状态 如果出现&a…

关于标准库中的反向迭代器

什么是迭代器&#xff1f; 迭代器&#xff08;iterator&#xff09;有时又称光标&#xff08;cursor&#xff09;是程序设计的软件设计模式&#xff0c;可在容器对象&#xff08;container&#xff0c;例如list或vector&#xff09;上遍历访问的接口&#xff0c;通常来…

Ps:图框工具

图框工具 Frame Tool是自 Ps 2019 版开始新增的一个工具。 图框 Frame可用于限制图像的显示范围&#xff0c;在设计过程中&#xff0c;还常常可起到占位符的功能。 快捷键&#xff1a;K 使用图框工具&#xff0c;对于快速相册排版、创建某种形式的特效等有一定的帮助。比起使用…

ctfshow 杂项签到

ctfshow的杂项签到题&#xff0c;下载压缩包之后里面有图片。 直接将图片用010editor打开&#xff0c;检索ctfshow可以看到答案。

Frequency-domain MLPs are More EffectiveLearners in Time Series Forecasting

本论文来自于 37th Conference on Neural Information Processing Systems (NeurIPS 2023) Abstract 时间序列预测在金融、交通、能源、医疗等不同行业中发挥着关键作用。虽然现有文献设计了许多基于 RNN、GNN 或 Transformer 的复杂架构&#xff08;注意力机制的计算太占用资…

.net6使用Sejil可视化日志

&#xff08;关注博主后&#xff0c;在“粉丝专栏”&#xff0c;可免费阅读此文&#xff09; 之前介绍了这篇.net 5使用LogDashboard_.net 5logdashboard rootpath-CSDN博客 这篇文章将会更加的简单&#xff0c;最终的效果都是可视化日志。 在程序非常庞大的时候&…

js函数声明的几种方式

在JavaScript中&#xff0c;有几种方式可以声明函数&#xff0c;其中最常见的有两种&#xff1a;函数声明和函数表达式。 一、函数声明 使用关键字 function 来声明函数&#xff0c;语法如下 function functionName(parameters) {// 函数体 }例子&#xff1a; function gre…

blender scripting 编写

blender scripting 编写 一、查看ui按钮对应的代码二、查看或修改对象名称三、案例&#xff1a;渲染多张图片并导出对应的相机参数 一、查看ui按钮对应的代码 二、查看或修改对象名称 三、案例&#xff1a;渲染多张图片并导出对应的相机参数 注&#xff1a;通过ui交互都设置好…

GEE数据集——USGS全球地震数据集

美国地质勘探局全球地震数据集 美国地质调查局地震灾害计划 (EHP) 提供全面的地震数据集&#xff0c;为全球监测、研究和地震防备提供宝贵资源。该数据集包含来自各种来源的地震信息&#xff0c;包括地震台、卫星图像和地面观测。持续更新&#xff0c;截至 2023 年 10 月 10 日…