redis虽然提供了多种数据结构,但是redis并没有直接使用这些数据结构来实现底层键值对,而是基于这些数据结构创建了一个对象系统(1:字符串 2:列表 3:集合 4:hash 5:有序集合)。
接下来总结一下各个对象使用的底层数据结构及其时间复杂度。
redis对象
1:字符串
2:列表
2.1、列表对象的编码可以是ziplist或linkedlist。
编码转换:当列表对象同时满足一下两个条件时,列表对象使用ziplist编码,否则使用linkedlist编码
1)列表对象保存的所有字符串元素的长度都小于64字节时(redis配置文件 list-max-ziplist-value 配置)
2)列表对象保存的元素数量小于512个。(redis配置文件list-max-ziplist-entries配置)
2.2、列表对象命令的实现
3:hash对象
4:集合
5:有序集合