00 首页
Redis 架构图解
Redis 将常规键空间操作集中在事件循环驱动的命令执行路径,围绕内存数据组织持久化、异步复制与 Cluster 分片。网络 I/O、后台任务和模块可并行,不能把整个进程理解成只有一个线程。
版本:Redis Open Source 8.10.3;核实日期:2026-11-12。官方在线文档可能继续更新,源码链接固定到对应发布标签。图为原理抽象,省略非本页重点。
从边界到模块
specification {
element actor { style { shape person; color amber } }
element system { style { color muted } }
element component { style { color primary } }
element storage { style { shape storage; color green } }
}
model {
client = actor '应用 / Cluster 客户端'
replica = system '副本节点'
peer = system '其他 Cluster 主节点'
app = system 'Redis 单节点' {
io = component '连接与事件循环'
exec = component '命令分发与执行'
data = storage '内存键空间'
persist = component 'RDB / AOF'
cluster = component 'Cluster 路由与总线'
}
client -> app.io 'RESP 请求与响应'
app.io -> app.exec '解析并调度命令'
app.exec -> app.data '访问键值'
app.exec -> app.persist '传播写入'
app.exec -> replica '异步复制流'
app.cluster -> peer '槽归属与故障信息'
app.io -> app.cluster '校验键所属槽'
}
views {
view index {
title '01 · 系统边界'
include client, replica, peer, app
autoLayout LeftRight
}
view modules of app {
title '02 · 模块与数据流'
include app.*, client, replica, peer
autoLayout LeftRight
}
}
阅读方法
先看“系统边界”,再切换“模块与数据流”或从系统节点进入下钻视图。箭头表示交互或数据流,不代表全部为同步调用;每条核心链路页提供独立可读的时序图。可在图中缩放、平移和切换视图。
四条核心链路
- 命令执行与事件循环:一次 GET 的关键是:连接就绪后解析 RESP,再进入命令分发;慢命令仍可能占住命令执行路径。
- RDB 与 AOF 持久化:RDB 保存某个时刻的数据快照,AOF 保存可重放的写入效果;写入文件与 fsync 到稳定介质是两回事。
- 主从复制:副本通过复制 ID 与 offset 尝试续传;缺失历史不在 backlog 中时,转为全量同步。
- Cluster 分片:Cluster 客户端按 16384 个槽定位主节点;MOVED 更新长期路由,ASK 只用于迁槽过程中的一次临时重定向。