1.简单动态字符串(simple dynamic string, SDS)
组成:leng(长度)+free(空闲长度)+buf(二进制数组用于存储内容)
优点:
查询字符串长度更快
因为有free,可以杜绝溢出
减少内存重分配(更改内容先检查len,不够时补free,且len小于1m时,新增free=len,len大于1m时,free=len)
1.简单动态字符串
2.链表
组成:头结点指针+尾结点指针+结点长度
结点:前一个结点指针+后一个结点指针+结点value
2.链表
3.字典
组成:两个哈希表,一个空着用于rehash
哈希:哈希数组组成的链表(kv值+指向下一个结点的指针)+size+used+mask(mask=size-1)
rehash:当一个哈希表不够的时候,将进行类似复制算法来rehash
3.字典
4.跳跃表
组成:结点+描述
结点:层(1-32层)+前进指针+跨度+后退指针+分值+保存成员
描述:头指针+尾指针+最高层(不包含头结点)+长度(不包含头结点)
4.跳跃表
5.整数集合
组成:编码方式+长度+内容数组
升级操作:若有一个新加数为Int64,则全部变为int64
降级操作:不支持
5.整数集合
6.压缩列表
组成:描述+结点
描述:总占用内存+尾结点距离头结点的偏移字节+结点数量+结点+末尾结点标识
结点:前一个结点的长度+编码+内容
6.压缩列表