,那么会造成读取被截断,获取的数据不完整
不可修改
容易造成缓冲区溢出,例如字符串拼接时,超过原本的空间大小,可能会覆盖掉相邻变量的内存空间
而SDS就是对c字符串的封装,以此来解决上述的问题。...Dict由三部分组成,分别是: 哈希表(DictHashTable),哈希节点(DictEntry).字典(Dict)
//哈希节点
typedef struct dictEntry {
//键...如果数值大小在1-12区间内,那么采用最后一种特殊编码方式,不需要content属性
例如: 一个ZipList中包含两个整数值: “2"和"5”
连锁更新问题
此时,如果我们将一个长度大于...小结
压缩列表可以看做一种连续内存空间的双向链表
列表的节点之间不是通过指针连接,而是记录上一节点和本节点的长度来寻址,内存占用低
如果列表数据过多,导致链表过长,可能影响查询性能
增或删较大数据时有可能发生连续更新问题...控制了ZipList大小,解决了连续内存空间申请效率问题
中间节点可以压缩,进一步节省内存
SkipList(跳跃表)
SkipList首先是链表,但与传统链表相比有几点差异:
元素按照升序排列存储