随笔分类 -  redis

redis源码分析(3)链表adlist.c
摘要:adlist.c可以说是一个比较经典的双端链表,熟悉链表的话应该很快就能读懂。 数据结构都比较好懂。 创建一个新的链表: 释放链表: 头插 尾插 创建一个新的值为value的节点,插入到指定节点old_node之前或者之后。 删除指定节点 创建和释放迭代器: 重置迭代器的方向和起点: 返回迭代器当前 阅读全文

posted @ 2019-09-23 17:38 长岛的雪 阅读(201) 评论(0) 推荐(0)

redis源码分析(2)字符串sds.c
摘要:sds是一个char*的类型别名 可以把这个结构体和对应操作函数类比为C++中STL的string类。 因此可知,如果传入buf的地址s,该结构体的地址就是s-sizeof(struct sdshdr); 这两个函数比较好理解,当传入的sds类型而非普通字符数组时,求sds的现有长度和sds的可用长 阅读全文

posted @ 2019-08-22 17:11 长岛的雪 阅读(311) 评论(0) 推荐(0)

redis源码分析(1)内存管理zmalloc
摘要:总体来说,zmalloc根据平台不同加了一层封装,可以维护已申请的总共堆内存的大小。 PREFIX_SIZE是一个预留量,用于存储当前分配内存的大小。 在linux下,PREFIX_SIZE大小为8 1.分配时会多分配PREFIX_SIZE。 2.将多分配出来的地方写入大小,但是这个大小不包括PRE 阅读全文

posted @ 2019-07-23 10:13 长岛的雪 阅读(247) 评论(0) 推荐(0)