Yano Blog

少即是多,慢即是快。

Redis 源码简洁剖析 13 - RDB 文件

RDB 是什么 RDB 文件格式 Header Body DB Selector AUX Fields Key-Value Footer 编码算法说明 Length 编码 S...

Redis 源码简洁剖析 12 - 一条命令的处理过程

命令的处理过程 命令读取 命令解析 命令执行 结果返回 参考链接 Redis 源码简洁剖析系列 我的公众号 命令的处理过程 Redis server 和一个客户端建立连接后,会在事件驱动框架中注册可读事件——客户端的命令请求。命令处理对应 4 个阶段: 命令读取:对应 readQueryFromClient 函数 命令解析:对应 proces...

Redis 源码简洁剖析 11 - 主 IO 线程及 Redis 6.0 多 IO 线程

Redis 到底是不是单线程的程序? 多 IO 线程的初始化 IO 线程运行函数 IOThreadMain 如何推迟客户端「读」操作? 如何推迟客户端「写」操作? 如何把待「读」客户端分配给 IO 线程执行? 如何把待「写」客户端分配给 IO 线程执行? 总结 参考链接 Redis 源码简洁剖...

Redis 源码简洁剖析 10 - aeEventLoop 及事件

aeEventLoop IO 事件处理 IO 事件创建 读事件处理 写事件处理 时间事件处理 时间事件定义 时间事件创建 时间事件回调函数 时间事件的触发处理 参考链接 Redis 源码简洁剖析系列 我的公众号 aeEventL...

Redis 源码简洁剖析 09 - Reactor 模型

Reactor 模型 事件驱动框架 Redis 如何实现 Reactor 模型 事件的数据结构:aeFileEvent 主循环:aeMain 函数 事件捕获与分发:aeProcessEvents 函数 事件注册:aeCreateFileEvent 函数 总结 参考链接 Redis 源码简洁剖析...

Redis 源码简洁剖析 08 - epoll

select, poll, epoll 源码分析 参考链接 Redis 源码简洁剖析系列 我的公众号 select, poll, epoll 关于 select, poll, epoll,​网络 IO 演变发展过程和模型介绍 这篇文章讲得很好,本文就不浪费笔墨了。 Redis 如何针对不同操作系统,选择不同的 IO 多路复用机制,具体代码在 ae.c。 /...

Redis 源码简洁剖析 07 - main 函数启动

前言 问题 阶段 1:基本初始化 阶段 2:检查哨兵模式,执行 RDB 或 AOF 检测 阶段 3:运行参数解析 阶段 4:初始化 server 资源管理 初始化数据库 创建事件驱动框架 阶段 5:执行事件驱动框架 参考链接 Redis 源码简洁剖析系列 我的公众号 前言 main ...

Redis 源码简洁剖析 06 - quicklist 和 listpack

quicklist 为什么要设计 quicklist 特点 数据结构 quicklistCreate quicklistDelIndex quicklistDelEntry quicklistInsertBefore, quicklistInsertAfter listpa...

Redis 源码简洁剖析 05 - ziplist 压缩列表

ziplist 是什么 Redis 哪些数据结构使用了 ziplist? ziplist 特点 优点 缺点 ziplist 数据结构 ziplist 节点 pre_entry_length encoding 和 length content ...

Redis 源码简洁剖析 04 - Sorted Set 有序集合

Sorted Set 是什么 Sorted Set 命令及实现方法 Sorted Set 数据结构 跳表(skiplist) 跳表节点的结构定义 跳表的定义 跳表节点查询 层数设置 跳表插入节点 zslInsert 跳表删除节点 zslDelete Sorted Set 基...