Redis学习笔记
Redis 学习记录 记录一下 Redis 的学习,仅供参考。 SDS 简单动态字符串 Redis 没有直接使用 C 语言的传统字符串表示,而是自己构建了(simple dynamic string)的抽象类型,并且广泛运用在 Redis 的代码当中。 传统的 c 字符串只会在 Redis 的代码中充当字符串字面量使用,也就是类似于打印日志时 log("xxxxx")这样使用。 sds.h/sdshdr 定义了 sds 的结构 struct sdshdr { //记录buf数组中所使用的字节数量 //等于sds所保存的字符串的长度 int len; //记录buf数组中为使用的字节数量 int free; //字节数组 用于保存字符串 char buf[]; } 并且还沿用了 c 字符串的以空字符串'\0'结尾,这样可以重用一部分 c 字符串函数库里面的函数。 C 字符串 SDS 获取字符串长度的复杂度为 O(n) 获取字符串长度的复杂度为 O(1) API 是不安全的,可能造成缓冲区溢出 API 是安全的,不会造成缓冲区溢出 修改字符串长度 N 次必然要执行....