
redis源码学习
主要是学习Redis源码和《Redis设计与实现》的一些记录
patientcat
这个作者很懒,什么都没留下…
展开
-
Redis源码学习-8-Redis源码网络部分简要分析
main函数流程文章目录main函数流程0. 前言1. 简要源码分析1.1 小结0. 前言接下来,我们就跟随一下代码,或者说函数调用栈,来看下。Redis是怎么做的。1. 简要源码分析当前,我们先刨除一些业务上的代码,仅仅只看有关网络的代码。// redis.cint main(int argc, char **argv) { // 初始化服务器 // 这里主要设...原创 2019-12-17 23:39:59 · 313 阅读 · 0 评论 -
Redis源码学习-7-事件驱动2
事件驱动文章目录事件驱动1. 数据结构1.1 Demultiplexer1.1.1 创建epoll实例1.1.2 关联事件到fd,并修改epfd的兴趣列表1.1.3 轮询1.2 Dispatcher1.2.1 初始化Dispatcher1.2.2 添加文件事件1.2.3 处理事件1.3 事件的抽象1.3.1 文件事件1.3.2 时间事件1.4 小结2. 实践1. 数据结构1.1 Demult...原创 2019-12-01 17:12:28 · 459 阅读 · 0 评论 -
Redis源码学习-6-事件驱动1
事件驱动编程文章目录事件驱动编程1 回顾1.1 阻塞编程1.2 Tips:read和write的局限2. 事件驱动编程2.1 问题1:什么时候读2.2 问题2:读多少3. Reactor模式伪代码3.1 结构3.2 简单运行1 回顾这里的回顾主要涉及到我自己的学习。如果是初学者的话,可以跳过,直接到2.1.1 阻塞编程一般情况下,我们在最开始学习网络编程的时候,这里主要指socket编程...原创 2019-12-01 17:09:06 · 369 阅读 · 0 评论 -
Redis源码学习-5-对象
对象文章目录对象1. 对象分类2. 数据结构2.1 类型2.2 编码3. 接下来的目标5. 各种对象5.1 创建一个新 robj 对象5.2 字符串对象5.2.1 编码5.2.2 embstr的创建5.3 列表对象5.3.1 编码5.4 哈希对象5.4.1 编码5.5 集合对象5.5.1 编码5.5.2 zset几个概念澄清。Redis并不直接使用之前学习的数据结构,而是使用对象1. 对象分...原创 2019-12-01 17:08:12 · 405 阅读 · 0 评论 -
Redis源码学习-4-整数集合
整数集合文章目录整数集合1. 数据结构2. 有序结构3. 升级3.1 具体演示3.2 为什么设置升级?主要存放在intset.h1. 数据结构typedef struct intset { // 编码方式 uint32_t encoding; // 集合包含的元素数量 uint32_t length; // 保存元素的数组 in...原创 2019-11-24 15:34:24 · 235 阅读 · 0 评论 -
Redis源码学习-3-跳表
跳表-skipList文章目录1. 跳表和红黑树2. 跳表的c++简单实现2.1 源码2.2 一个普通的跳表2.3 查找3. Redis跳表的数据结构3.1 跳表节点3.2 跳跃表3.3 跳表的创建3.4 插入跳表节点到跳表中3.5 属性解释4. 跳表的特有API文章目录redis.h 中的 zskiplist 结构和 zskiplistNode 结构, 以及t_zset.c 中所有以 zsl...原创 2019-11-14 22:16:36 · 448 阅读 · 0 评论 -
Redis源码学习-2-字典
哈希表文章目录哈希表1. 数据结构1.1 哈希表节点1.2 哈希表1.3 字典2. 一个普通状态下的字典3. 字典的变化3.1 创建一个字典3.2 插入一个元素3.3 发生哈希冲突之后3.4 哈希算法3.5 rehash渐进式rehash3.6 rehash期间的字典操作在文件<<dict.h>>和<<dict.c>>中1. 数据结构对于类似...原创 2019-11-13 19:27:55 · 454 阅读 · 0 评论 -
Redis源码学习-1-简单字符串
简单字符串(SDS)文章目录简单字符串(SDS)1. 预备知识1.1 字节对齐1.1.1 影响1.1.21.2 buf[]使用1.2.1 有什么用?1.2.2 正确例子char[]不能想用就用2. 数据结构2.1 优点3 SDS API3.1 简单分析 sdslen3.2 如何兼容C字符串函数在文件<<sds.c>>和<<sds.h>>中1. ...原创 2019-11-12 21:08:24 · 335 阅读 · 0 评论