WangFuJie Blog

路在脚下,心向远方

Redis源码阅读 - Redis数据结构压缩链表(ziplist)

Redis数据结构压缩链表(ziplist)

ziplist 是由一系列特殊编码的内存块构成的列表,可以保存字符数组或整数值。它根据字符长度或者整数大小使用不同的编码类型,用于节约内存空间。添加和删除 ziplist 节点有可能会引起连锁更新。ziplist是在最新版本已经废弃的结构,同样废弃的还有zipmap。代码中依然保留是为了加载低版本RDB时的兼容性。

Redis源码阅读 - Redis数据结构整数集合(intset)

Redis数据结构整数集合(intset)

整数集合(intset)用于有序、无重复地保存多个整数值, 根据元素的值, 自动选择该用什么长度的整数类型来保存元素,它是按照从小到大的顺序排列的,是set类型的底层实现之一。

Redis源码阅读 - Redis数据结构跳表(skiplist)

Redis数据结构跳表(skiplist)

跳表(skiplist)是一种随机化的数据, 以有序的方式在层次化的链表中保存元素。Redis实现了跳表作为zset数据类型的底层索引实现,因此zset可以支持范围查询。本文我们将重点学习跳表结构的实现。

Redis源码阅读 - Redis数据结构字典(dict)

Redis数据结构字典(dict)

字典是一种抽象数据结构,由键值对(key-value pairs)组成,在Redis中的应用非常广泛。Redis使用拉链法解决哈希冲突问题,并且实现了渐进式rehash避免了传统rehash阻塞正常请求。

Redis源码阅读 - Redis数据结构双向链表(adlist)

Redis数据结构双向链表(adlist)

双向链表是一种通用的链式数据结构,Redis很多模块都有使用到。它的优点是操作前驱后继和头尾节点的时间复杂度都是O(1), 并且不需要连续的内存空间。同样它的缺点访问中间元素的时间复杂度为O(n),这点是不如列表的。