redis源码剖析 精华部分(待补充)

第二章 简单动态字符串

1.sds的定义

file

2.sds与C风格字符串的区别

  • 常数时间复杂度获取字符串长度
  • 杜绝缓冲区溢出
  • 减少修改字符串时带来的内存重分配次数(有未使用空间)
    • 空间预分配。对sds修改后,如果len属于小于1MB,则分配与len属性相同大小的未使用空间(另外还要占用一个字节保存空字符),如果大于1MB,则分配1MB。
    • 惰性空间释放。字符串缩短后并不会释放内存,可以调用API释放
  • 二进制安全
  • 兼容C字符串函数(sds->buf,同样以空字符串结尾)

第三章 链表

1.链表的定义

file

file

redis链表特性:双端、无环,带表头和表尾指针,带长度计数器,多态(链表使用void*保存值,可以保存不同的值)

第四章 字典

1.哈希表定义

file
file

2.字典的定义

file

file

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

Contents
滚动至顶部