ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
![](https://img.kancloud.cn/68/89/68896b783bf165c7b8b07527f4f46e13_789x438.png) 1. SDS simple synamic string:支持自动动态扩容的字节数组  2. list :链表  3. dict :使用双哈希表实现的, 支持平滑扩容的字典  4. zskiplist :附加了后向指针的跳跃表  5. intset : 用于存储整数数值集合的自有结构  6. ziplist :一种实现上类似于TLV, 但比TLV复杂的, 用于存储任意数据的有序序列的数据结构  7. quicklist:一种以ziplist作为结点的双链表结构, 实现的非常不错  8. zipmap : 一种用于在小规模场合使用的轻量级字典结构 编码转换 (1).字符串 字符串对象的编码可以是int,raw或者embstr 当 int 编码保存的值不再是整数,或大小超过了long的范围时,自动转化为raw。 对于 embstr 编码,由于 Redis 没有对其编写任何的修改程序(embstr 是只读的),在对embstr对象进行修改时,都会先转化为raw再进行修改,因此,只要是修改embstr对象,修改后的对象一定是raw的,无论是否达到了44个字节。 (2).哈希 哈希对象的编码可以是 ziplist 或者 hashtable 同时满足下面两个条件时,使用ziplist(压缩列表)编码 1、列表保存元素个数小于512个 2、每个元素长度小于64字节 不能满足这两个条件的时候使用 hashtable 编码。第一个条件可以通过配置文件中的 set-max-intset-entries 进行修改。 (3).列表 列表对象的编码可以是 ziplist(压缩列表) 和 linkedlist(双端链表) 当同时满足下面两个条件时,使用ziplist(压缩列表)编码: 1、列表保存元素个数小于512个 2、每个元素长度小于64字节 不能满足这两个条件的时候使用 linkedlist 编码。 上面两个条件可以在redis.conf 配置文件中的 list-max-ziplist-value选项和 list-max-ziplist-entries 选项进行配置 (4).无序集合 集合对象的编码可以是 intset 或者 hashtable。 当集合同时满足以下两个条件时,使用 intset 编码: 1、集合对象中所有元素都是整数 2、集合对象所有元素数量不超过512 不能满足这两个条件的就使用 hashtable 编码。第二个条件可以通过配置文件的 set-max-intset-entries 进行配置。 (5).有序集合 有序集合的编码可以是 ziplist 或者 skiplist。 当有序集合对象同时满足以下两个条件时,对象使用 ziplist 编码: 1、保存的元素数量小于128; 2、保存的所有元素长度都小于64字节。 不能满足上面两个条件的使用 skiplist 编码。以上两个条件也可以通过Redis配置文件zset-max-ziplist-entries 选项和 zset-max-ziplist-value 进行修改。