当前位置: 首页 > news >正文

【Redis】快速列表结构

目录

  • 1、背景
  • 2、压缩列表
    • 【1】底层结构
    • 【2】特性
    • 【3】优缺点

1、背景

redis的quicklist(快速列表)是一个双向链表,其中每个节点都是一个ziplist(压缩列表)。这中结构结合了双向链表和压缩列表的优点,在内存使用和性能之间取得了平衡,接下来就来熟悉一下redis(6.2.18版本)的底层结构实现。

2、压缩列表

【1】底层结构

quicklist的底层结构如下:

typedef struct quicklist {quicklistNode *head; //指向头部节点quicklistNode *tail; //指向尾部节点unsigned long count; //所有ziplist中的条目总数unsigned long len; //quicklist节点数量int fill : QL_FILL_BITS; //单个ziplist的最大大小限制unsigned int compress : QL_COMP_BITS; //不压缩的节点深度unsigned int bookmark_count: QL_BM_BITS;quicklistBookmark bookmarks[];
} quicklist;typedef struct quicklistNode {struct quicklistNode *prev; //上一个节点指针struct quicklistNode *next; //下一个节点指针unsigned char *zl; //指向压缩列表的指针unsigned int sz; //ziplist的字节大小unsigned int count : 16; //ziplist中的条目数unsigned int encoding : 2;   /* RAW==1 or LZF==2 */unsigned int container : 2;  /* NONE==1 or ZIPLIST==2 */unsigned int recompress : 1; //是否被压缩过unsigned int attempted_compress : 1; /* node can't compress; too small */unsigned int extra : 10; //保留位
} quicklistNode;

向quicklist添加一个元素的时候,不会像普通的链表那样直接新建一个链表节点,而是会检查插入位置的压缩列表是否能够容纳该元素,如果能容纳就直接保存到quicklistNode结构里的压缩列表里,如果不能容纳,才会建一个新的quicklistNode结构。

【2】特性

quick的特性如下:

特性描述
数据结构双向链表 + 压缩列表的混合结构
节点存储每个节点存储一个压缩列表
内存效率通过压缩列表减少元素的内存开销
可配置性可配置单个ziplist的最大大小和压缩深度
灵活性支持从头部和尾部插入/删除
压缩支持可选择对中间节点进行压缩

【3】优缺点

优点缺点
内存使用效率高,特别是对小元素随机访问性能不如数组结构
插入和删除操作高效需要维护更复杂的结构
支持大列表的分片存储配置不当可能导致性能下降
可配置的压缩策略平衡内存和cpu压缩和解压缩需要额外cpu开销
保留了双向链表的灵活性节点分裂和合并可能增加复杂度

相关文章:

  • 没有公网ip怎么端口映射外网访问?使用内网穿透可以解决
  • upload-labs通关笔记-第12关 文件上传之白名单GET法
  • 氩气模块压力异常时的维修方法,要注意仪器的安全操作规范,避免对仪器造成二次损坏
  • Python训练营打卡 Day30
  • JavaWeb:Spring配置文件( @ConfigurationProperties)
  • centos把jar包配置成服务并设置开机自启
  • AIGC工具平台-卡通图片2D转绘3D
  • Docker构建 Dify 应用定时任务助手
  • linux系统双击EXE运行,在统信UOS上无缝运行EXE!统信Windows应用兼容引擎V3来了
  • PyTorch模型保存方式
  • 【软考-架构】15、软件架构的演化和维护
  • 力扣热题100之删除链表的倒数第N个节点
  • 鸿蒙 Location Kit(位置服务)
  • 双周报Vol.72:字段级文档注释支持、视图类型现为值类型,减少内存分配
  • Python网络爬虫入门指南
  • 【CodeBuddy 】从0到1,让网页导航栏变为摸鱼神器
  • 视图+触发器+临时表+派生表
  • 用于判断主子关系的方法的实现(orm是efcore)
  • [特殊字符] Word2Vec:将词映射到高维空间,它到底能解决什么问题?
  • 深入解析OkHttp与Retrofit:Android网络请求的黄金组合
  • 东南亚五大经济体一季度增长放缓,美国关税大棒或阻全年增长
  • 香港新股市场繁荣:恒瑞医药等4公司同时招股,宁德时代今日港交所上市
  • 半数以上中国人都缺这几种营养,吃什么能补回来?
  • 慢品巴陵,看总编辑眼中的岳阳如何书写“山水人文答卷”
  • 十年牢狱倒计时,一名服刑人员的期待与惶恐
  • 关税互降后的外贸企业:之前暂停的订单加紧发货,后续订单考验沟通谈判能力