redis源代码分析2–动态字符串

redis的字符串号称是二进制安全的,其内部实现其实就是个head+ char*。

typedef char *sds;
struct sdshdr {
	long len;
	long free;
	char buf[];
};

len 表示buf字符数组实际使用的空间大小,free表示buf剩余空间大小,buf所分配的空间大小等于len+free。尽管一开始buf的大小等于 len(当然可以大于),但随着字符串连接、拷贝(C中的字符串函数),buf分配的空间很可能会比len大,此时redis并不会释放多出的内存。

redis源代码分析2–动态字符串

此条目发表在 redis 分类目录,贴了 , , 标签。将固定链接加入收藏夹。

redis源代码分析2–动态字符串》有 2 条评论

  1. Joe 说:

    请教一下:
    string 类型,Get key 的操作 ,我看资料说是O(1)的 ,我有点每想通,string类型怎么做的,也是用hash!
    没找到相应的代码,能否告知 一二, 代码位置也行!

发表评论

电子邮件地址不会被公开。 必填项已被标记为 *

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>