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

文章目录

  • [1. 引言](#1. 引言)
  • [2. redis 源码下载](#2. redis 源码下载)
  • [3. quickList 数据结构](#3. quickList 数据结构)
    • [3.1 整体](#3.1 整体)
    • [3.2 数据结构](#3.2 数据结构)
  • [4. 参考](#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 数据结构》

相关推荐
m0_646429972 分钟前
Docker 完整核心知识点总结(超通俗易懂版)
运维·docker·容器
wdfk_prog15 分钟前
LWIP教程 09:从 `tcp_slowtmr()` 到 Fast Retransmit——TCP 超时重传与重复 ACK
服务器·网络·数据库·网络协议·tcp/ip
逸模17 分钟前
BIM在连锁餐饮装修中的应用:不只是画三维图
大数据·数据库·人工智能·物联网·建模
辣知21 分钟前
辣知·化智77 三千年接力写就的一本书
学习
梦想平凡21 分钟前
棋牌游戏技术实战(五):从对局事件重新执行规则,核对棋盘和最终状态
数据库·游戏·oracle
亚川楼宇自控系统数据中心厂家24 分钟前
IBMS 集成管理系统:如何打通楼宇自控实现建筑一体化管控
运维
一木 之林27 分钟前
Dify学习笔记 01 · 平台入门与实战:部署、五类应用、RAG与MCP(第1-16集)
人工智能·笔记·学习·计算机视觉
白露与泡影29 分钟前
Oracle AI Database 26ai RAC 部署步骤、关键命令与一键脚本
数据库·人工智能·oracle
迪康Defender30 分钟前
终端安全审批体系设计:如何平衡安全管控与业务连续性
运维·服务器·安全·运维开发·学习方法·业界资讯·远程工作
摸鱼 特供版1 小时前
一款边录边标注的轻量截图录屏工具
windows·学习·电脑·音视频·软件需求