Redis基于数据结构创建的一个对象系统,这个系统包含字符串对象(string),列表对象(list),哈希对象(hash),集合对象(set)和有序集合对象(zset)ste这五种类型的结构,可以针对使用场景,设置多种不同的数据结构的命令。
string对象编码:
int:字符类型串对象保存的是整数值,并且这个整数值可以用long表示
raw: 保存对象是一个字符串字,字符串长度大于39字节
embstr: 小于等于39字节
hash对象的编码:
ziplist :使用压缩列表作为底层实现,当有新的键值对要加入到hash对象的时候,程序先将保存了的压缩列表推入发哦压缩列表的表尾。
hashtable: 哈希对象是字典作为底层的实现,哈希对象中的每一个键值对都使用了一个字典键值,
set对象编码:
intset:集合对象使用整数集合作为底层实现,集合对象包含所有都被保存在整数集合里面
hashtable:使用字典作为底层实现,字典的每个键都是一个字符串对象,每个字符对象包含了一个集合对象,二字典的指则全部被设置成null。
list对象编码;
ziplist:使用了压缩对象使用压缩列表作为底层实现,每个压缩列表节点保存了一个列表对象。
linkedlist:编码的列表对象使用双端链表作为底层实现,每个双端链表节点都保存一个字符串对象,而字符串对象都保存了一个列表元素。
zset对象编码:
ziplist: 使用压缩列表作为底层实现,每个集合元素使用两个紧挨在一起的压缩列表节点来保存,第一个保存元素的成员,第二个保存元素的分
值。
skiplist:有序集合对象的编码使用zset结构作为底层实现,一个zset结构同时包含一个字典和一个跳跃表。