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


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 数据结构》

相关推荐

  1. redis 01完整学习 (三):redis 数据结构

    2023-12-25 17:40:01       61 阅读
  2. 6、Redis系统-数据结构-07-QuickList

    2023-12-25 17:40:01       26 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-25 17:40:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-25 17:40:01       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-25 17:40:01       82 阅读
  4. Python语言-面向对象

    2023-12-25 17:40:01       91 阅读

热门阅读

  1. 【mysql】查询表结构

    2023-12-25 17:40:01       58 阅读
  2. 关于Jlink无法识别设备

    2023-12-25 17:40:01       51 阅读
  3. Linux 文件的权限管理

    2023-12-25 17:40:01       56 阅读
  4. 深度学习(Deep Learning) 简介

    2023-12-25 17:40:01       67 阅读
  5. C#中的哈希表(Hashtable)

    2023-12-25 17:40:01       55 阅读
  6. [AIGC] Apache Spark 简介

    2023-12-25 17:40:01       62 阅读
  7. 设 备 管 理

    2023-12-25 17:40:01       40 阅读
  8. 简述一下微信小程序的路由概念

    2023-12-25 17:40:01       57 阅读
  9. 华为OD机试真题-找座位-2023年OD统一考试(C卷)

    2023-12-25 17:40:01       58 阅读
  10. 记录Macbook Pro 2017 使用Opencore安装sonoma

    2023-12-25 17:40:01       97 阅读