Redis设计与实现
2022-03-28 17:11:48 15 举报
AI智能生成
《Redis设计与实现》思维导图
作者其他创作
大纲/内容
数据结构与对象
简单动态字符串(SDS)
定义
SDS与C字符串的区别
获取字符串的长度
缓冲区溢出
内存重分配次数
二进制安全
兼容部分C字符串
链表(linkedList)
字典
实现
哈希算法
解决键冲突
rehash
渐进式rehash
跳跃表(skipList)
整数集合
压缩列表(zipList)
快速列表(quickList)
对象
对象的类型与编码
字符串对象
列表对象
哈希对象
集合对象
有序集合对象
类型检查与命令多态
内存回收
对象共享
对象的空转时长
单机数据库的实现
数据库
过期键策略和内存淘汰机制
AOF RDB 复制 对过期键的处理
数据库事件通知和键通知
RDB持久化
RDB文件的创建与载入
创建快照的办法
自动间隔性保存
RDB文件结构
AOF持久化
AOF持久化的实现
命令追加
文件写入
文件同步
AOF文件的载入与数据还原
AOF重写
事件
文件事件
文件事件处理器构成和执行流程
IO多路复用程序的实现
文件事件处理器
连接应答处理器
命令请求处理器
命令回复处理器
时间事件
分类
定时事件
周期性事件
组成
id
when
timeProc
实现
事件调度与执行
客户端
客户端属性
套字节描述符
名字
标志
输入缓冲区
命令与命令参数
命令的实现函数
输出缓冲区
身份验证
时间
创建与关闭
普通客户端
LUA脚本客户端
AOF文件伪客户端
服务器
命令的请求执行流程
发送命令请求
读取命令请求
命令执行器
查找命令
执行预备命令
调用命令的实现函数
执行后续操作
将命令回复发送给客户端
客户端接受并打印命令回复
serverCron函数
更新服务器时间缓存
更新LRU时钟
更新服务器每秒执行命令的次数
更新服务器内存峰值记录
处理SIGTERM信号
管理客户端资源
管理数据库资源
执行被延迟的BGREWRITEAOF
检查持久化操作的运行状态
将AOF缓冲区的内容写入AOF文件
关闭异步客户端
增加cronloops计数器的值
初始化服务器
初始化服务器状态结构
载入配置项
初始化服务器数据结构
还原数据库状态
执行事件循环
多机数据库的实现
复制
从服务器连接主服务器实现步骤
部分重同步的实现
复制偏移量
复制积压缓冲区
服务器运行ID
PSYNC
复制的实现(搭建主从)
心跳检测
检测主从服务器的网络连接状态
辅助实现`min-slave`
测命令丢失
Sentinel
集群
节点
启动节点
集群数据结构
建立集群
槽指派
记录节点的槽指派信息
传播节点的指派信息
记录集群所有槽的指派信息
CLUSTER ADDSLOTS命令的实现
在集群中执行命令
计算键属于哪个槽
判断槽是否由当前节点负责处理
MOVED错误
节点数据库的实现
重新分片
CLUSTER SETSLOT IMPORTING命令实现
CLUSTER SETSLOT MIGRSTING命令实现
ASK错误
ASK错误和MOVED两者的区别
复制与故障转移
设置从节点
故障检测
故障转移
选举新的主节点
消息
MEET
PING
PONG
FAIL
PUBLISH
Gossip 协议
Redis 集群中的纪元(epoch)
独立功能的实现
发布与订阅
频道的订阅与退订
订阅频道
退订频道
模式的订阅与退订
订阅模式
退订模式
发送消息
将消息发给频道订阅着
将消息发给模式订阅着
查看订阅消息
事务
watch命令
Lua脚本
排序
sort
ALPHA
ASC和DESC
BY
ALPHA加BY
LIMIT
get
store
二进制位数组
位数组的表示
GETBIT命令
SETBIT命令
带扩散操作的SETBIT命令
BITCOUNT的实现
遍历算法
查表法
variable-precision SWAR算法
慢查询日志
监视器
收藏
收藏
0 条评论
下一页