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 只用于迁槽过程中的一次临时重定向。

官方资料