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

redis的List底层数据结构 分别什么时候使用双向链表(Doubly Linked List)和压缩列表(ZipList)

在Redis中,List数据类型的底层数据结构可以在压缩列表(ZipList)和双向链表(Doubly Linked List)之间选择。以下是它们各自使用的条件:

1. **使用ZipList(压缩列表)的条件**:
   - 列表对象保存的所有字符串元素的长度都小于64字节。
   - 列表对象保存的元素数量小于512个。
   当这两个条件同时满足时,Redis会选择使用ZipList作为List的底层数据结构,以节省内存空间。

2. **使用Doubly Linked List(双向链表)的条件**:
   - 当List中的元素数量超过512个,或者元素中存在长度超过64字节的字符串时,Redis会使用双向链表作为List的底层数据结构。
   - 双向链表适合存储大量元素或者需要频繁进行头尾插入和删除操作的场景,因为它允许在O(1)时间复杂度内进行这些操作。

从Redis 3.2版本开始,Redis引入了QuickList作为List的新的底层实现,它结合了ZipList和双向链表的特点,以提高性能和存储效率。QuickList是一个由多个ZipList组成的双向链表,这样可以在保持ZipList内存效率的同时,支持更长的列表和快速的随机访问。
 


http://www.kler.cn/a/410567.html

相关文章:

  • 利用Python爬虫获得1688按关键字搜索商品:技术解析
  • 数据新时代:如何选择现代数据治理平台(上)
  • Python/GoLang/Java 多环境管理工具 pyenv/goenv/jenv
  • Spring Boot 应用开发:构建高效、可扩展的 Java 微服务
  • BERT的中文问答系统42
  • MongoDB相关问题
  • Git(一)基本使用
  • 如何使用docker启动一个gitlab
  • 僵尸毁灭工程 服务搭建 联机教程 无需公网IP、服务器
  • fiddler抓包工具与requests库构建自动化报告
  • 第三十九章:Grafana 概述、Docker安装与验证指南
  • 【Linux】认识进程以及进程的状态
  • 非交换几何与黎曼ζ函数:数学中的一场革命性对话
  • ubuntu24挂载硬盘记录
  • 故障排除-------K8s挂载集群外NFS异常
  • 【数据结构】树——链式存储二叉树的基础
  • 利用开源图床的技巧与实践
  • Pytorch微调深度学习模型
  • linux僵尸线程清理
  • 【Redis 缓存策略】更新、穿透、雪崩、击穿、布隆过滤
  • C语言-数学基础问题
  • ArcGIS API for Javascript学习
  • git 命令之只提交文件的部分更改
  • Python多进程与多线程详解:全面指南
  • 硬中断关闭后的堆栈抓取方法
  • HarmonyOS4+NEXT星河版入门与项目实战(19)------状态管理 @Prop@Link@Provide@Consume