diff --git a/Redis/1. 线程模型.md b/Redis/1. 线程模型.md new file mode 100644 index 0000000..9d79953 --- /dev/null +++ b/Redis/1. 线程模型.md @@ -0,0 +1,26 @@ +# 线程模型 + +**主线程** + +1. 接收请求 +2. 解析请求 +3. 执行请求 + +*使用一个主线程完成,但是不可以说 `Redis` 程序单线程的* + +**后台线程** + +- AOF刷盘线程 +- 关闭文件线程 +- 释放内存线程 + +*这些线程执行比较耗时,因此单独创建* + +--- + +> Q: 为什么 Redis 只有一个主线程还可以这么快? +> +> A: +> - 内存 +> - 多线程竞争 +> - I/O 多路复用 \ No newline at end of file diff --git a/Redis/2. 持久化.md b/Redis/2. 持久化.md new file mode 100644 index 0000000..b886d33 --- /dev/null +++ b/Redis/2. 持久化.md @@ -0,0 +1,25 @@ +# 持久化 + +- AOF + - 日志 +- RDB + - 快照 +- 混合持久化 + +**AOF** + +- 先执行命令 后写入日志 + - 避免检查开销 + - 不阻塞当前写操作的执行 +- 写回硬盘 + - `Always` + - `Everysec` + - `No` +- 日志过大 + - `AOF` **重写** + +**RDB** + +- **写时复制技术** + - 主线程写时保留一份副本 + - 后台线程使用副本数据 diff --git a/Redis/3. 哨兵模式.md b/Redis/3. 哨兵模式.md new file mode 100644 index 0000000..7be483b --- /dev/null +++ b/Redis/3. 哨兵模式.md @@ -0,0 +1,29 @@ +# 哨兵模式 + +**用途** + +主节点故障时切换新主节点保证服务稳定性 + +--- + +**监控** + +- 心跳机制 + - `PING/PONG` +- 主观下线 + - 目标节点未能在规定时间内响应 `PING` 命令 +- 客观下线 + - 仅对于主节点 + - 多个哨兵报告主节点处于下线状态 + +**选举** + +1. 判定主节点客观下线的哨兵成为Leader候选者 +2. 候选者发起投票 +3. 每位哨兵仅有一票,候选者可以投给自己 +4. 半数以上或配置的赞成票 +5. `Leader` 牵头执行主从切换 + +**通知** + +通知其他 节点 \ No newline at end of file