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

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

  1. **使用ZipList(压缩列表)的条件**:
  • 列表对象保存的所有字符串元素的长度都小于64字节。

  • 列表对象保存的元素数量小于512个。

当这两个条件同时满足时,Redis会选择使用ZipList作为List的底层数据结构,以节省内存空间。

  1. **使用Doubly Linked List(双向链表)的条件**:
  • 当List中的元素数量超过512个,或者元素中存在长度超过64字节的字符串时,Redis会使用双向链表作为List的底层数据结构。

  • 双向链表适合存储大量元素或者需要频繁进行头尾插入和删除操作的场景,因为它允许在O(1)时间复杂度内进行这些操作。

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

相关推荐
xqqxqxxq4 小时前
Redis 五大常用数据类型 + 通用命令笔记
数据库·redis·笔记
LCG元10 小时前
ESP32-IDF 远程固件升级实战:HTTPS OTA + 双分区切换 + 自动回滚
数据库·redis·https
MC皮蛋侠客11 小时前
Redis 系列(十一):高可用(二)——Redis Cluster 集群
数据库·redis·bootstrap
祈禾20 小时前
Redis三大缓存问题与分布式锁
运维·数据库·redis·笔记·分布式·缓存
福大大架构师每日一题1 天前
Redis 8.10.0 正式发布:紧凑哈希、批量导入、备份恢复、流与时序能力全面升级
数据库·redis·哈希算法
祈禾1 天前
Redis三大特殊数据类型
运维·服务器·数据库·redis·笔记·缓存
y = xⁿ1 天前
一文掌握Redis常见八股
数据库·redis·缓存
MC皮蛋侠客1 天前
Redis 系列(五):持久化——RDB、AOF 与混合持久化
数据库·redis·bootstrap
xqqxqxxq1 天前
Redis五大常用数据类型技术笔记
数据库·redis·笔记
acd120091 天前
Redis 缓存和数据库一致性,到底怎么搞?
数据库·redis·缓存