Redis中的列表对象比较特殊,在版本3.2之前,列表底层的编码是 ziplist 和 linkedlist 实现的, 但是在版本3.2之后,重新引入了一个 quicklist 的数据结构,列表的底层都由quicklist实现。
介绍完Redis的底层数据结构之后, 介绍我们平时使用Redis的时候可以直接看到五种数据结构:字符串、哈希、链表、集合和有序集合。
之前介绍的都是Redis的基础数据结构,比如简单动态字符串(SDS)、双端链表、字典、压缩列表、整数集合, 等等,不过Redis并没有直接用这些结构来实现键值对的数据库,而是对其进行了封装, 所有的键和值都是用对象Object来表示的。
压缩列表(ziplist)是列表键和哈希键的底层实现之一。 Redis的列表键,哈希键,有序集合的底层实现都用到了ziplist。
整数集合(intset)是集合键的底层实现之一: 当一个集合只包含整数值元素, 并且这个集合的元素数量不多时, Redis 就会使用整数集合作为集合键的底层实现。
跳跃表(skiplist)是一种有序数据结构, 它通过在每个节点中维持多个指向其他节点的指针, 从而达到快速访问节点的目的。
先贴一下整体的代码