会员
众包
新闻
博问
闪存
赞助商
HarmonyOS
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
我也要当大佬
博客园
首页
新随笔
联系
订阅
管理
上一页
1
2
2019年1月2日
Redis源码剖析(十一)--AOF持久化
摘要: AOF持久化的实现 命令追加 服务器执行写命令后,会将执行的写指令追加到 aof_buf 缓冲区: 追加到 aof_buf 缓冲区的命令是按照一定的协议格式保存的,catAppendOnlyGenericCommand 函数负责将命令转换为协议格式。从这个函数的实现可以清楚的看出协议格式是如何生成的
阅读全文
posted @ 2019-01-02 10:14 不学习就没有梦想
阅读(296)
评论(0)
推荐(0)
2018年12月29日
Redis源码剖析(十)--RDB持久化
摘要: RDB触发机制 命令触发 SAVE:SAVE命令会阻塞Redis服务进程,知道RDB文件创建完毕为止。 BGSAVE:BGSAVE会创建子进程,子进程负责创建RDB文件,父进程继续处理命令请求 自动间隔性保存 当配置文件中save选项的条件满足时,服务器自动执行BGSAVE命令。 自动执行 BGSA
阅读全文
posted @ 2018-12-29 10:45 不学习就没有梦想
阅读(520)
评论(0)
推荐(0)
2018年12月28日
Redis源码剖析(九)--数据库
摘要: 服务器中的数据库 数据库的实现 Redis的所有数据库保存在redisServer结构的db数组中,每个redisDb结构代表一个数据库,redisServer结构中的dbnum变量决定了有多少个数据库(默认为16个数据库) redisDb的数据结构如下,blocking_keys 和 ready_
阅读全文
posted @ 2018-12-28 12:08 不学习就没有梦想
阅读(324)
评论(0)
推荐(0)
2018年12月25日
Redis源码剖析(八)--对象系统
摘要: 对象的类型与编码 在 Redis 中新创建一个键值对时, 我们至少会创建两个对象, 一个对象用作键值对的键(键对象), 另一个对象用作键值对的值(值对象)。Redis 中的每个对象都由一个 redisObject 结构表示: 对象类型 对象的type属性记录了对象的类型,type属性的值有以下几种:
阅读全文
posted @ 2018-12-25 11:59 不学习就没有梦想
阅读(248)
评论(0)
推荐(0)
2018年12月24日
Redis源码剖析(七)--压缩列表
摘要: 压缩列表的构成 压缩列表是为了节省内存而开发的,可以包含任意多个节点(entry),每一个节点可以保存一个字节数组或者一个整数值。 下图展示了压缩列表的各个组成部分, zlbytes:4字节,压缩列表所用的字节数 zltail:4字节,记录压缩列表尾节点entryN距离压缩列表的起始地址的字节数。
阅读全文
posted @ 2018-12-24 09:29 不学习就没有梦想
阅读(273)
评论(0)
推荐(0)
2018年12月21日
Redis源码剖析(六)--整数集合
摘要: 整数集合的实现 整数集合(intset)是 Redis 用于保存整数值的集合抽象数据结构, 它可以保存类型为 int16_t 、 int32_t 或者 int64_t 的整数值, 并且保证集合中不会出现重复元素,同时底层数组中的元素按从小到大的顺序排列。 每个 intset.h/intset 结构表
阅读全文
posted @ 2018-12-21 10:12 不学习就没有梦想
阅读(238)
评论(0)
推荐(0)
2018年12月20日
Redis源码剖析(四)--字典
摘要: 字典的实现 哈希表 Redis 字典所使用的哈希表由 dict.h/dictht 结构定义: typedef struct dictht { // 哈希表数组 dictEntry **table; // 哈希表大小 unsigned long size; // 哈希表大小掩码,用于计算索引值 //
阅读全文
posted @ 2018-12-20 15:11 不学习就没有梦想
阅读(206)
评论(0)
推荐(0)
2018年12月4日
Redis源码剖析(三)--链表
摘要: 1 链表的实现 每个链表节点使用一个 adlist.h/listNode 结构来表示: typedef struct listNode { // 前置节点 struct listNode *prev; // 后置节点 struct listNode *next; // 节点的值 void *valu
阅读全文
posted @ 2018-12-04 16:25 不学习就没有梦想
阅读(237)
评论(0)
推荐(0)
Redis源码剖析(二)--简单动态字符串
摘要: Redis没有使用C语言的字符串结构,而是自己设计了一个简单的动态字符串结构sds。它的特点是:可动态扩展内存、二进制安全和与传统的C语言字符串类型兼容。下面就从源码的角度来分析一下Redis中sds的实现。 1 SDS的定义 SDS也有一个表头(header)用来存放sds的信息。 以下为一个SD
阅读全文
posted @ 2018-12-04 16:23 不学习就没有梦想
阅读(276)
评论(0)
推荐(0)
2018年11月15日
Redis源码剖析(一)--内存管理zmalloc
摘要: 功能函数总览 在zmalloc.h中,定义了Redis内存分配的主要功能函数,这些函数基本上实现了Redis内存申请,释放和统计等功能,其函数声明如下: void *zmalloc(size_t size); // 调用zmalloc函数,申请size大小的空间 void *zcalloc(size
阅读全文
posted @ 2018-11-15 17:40 不学习就没有梦想
阅读(747)
评论(0)
推荐(0)
上一页
1
2
公告
levels of contents