🗄️ Redis & MySQL 架构对比
内存数据库 vs 关系型数据库的核心架构
Redis
主要架构
客户端层
redis-cli
Jedis / Lettuce
redis-py
Spring Data Redis
RESP 协议 (TCP)
网络层
TCP Socket 监听 (默认端口 6379)
协议层
RESP 协议解析器
命令处理
命令分发器
commandDispatch()
命令执行器
call() → execCommand()
回复构建器
addReply()
数据结构
String
SDS (Simple Dynamic String)
List
quicklist / listpack
Hash
dict + listpack
Set
dict / intset
ZSet (Sorted Set)
skiplist + dict + listpack
存储引擎
内存管理
jemalloc / 内存淘汰策略 (LRU/LFU/TTL)
持久化机制
RDB 快照 (bgsave)
AOF 日志 (append only file)
高可用
主从复制
Master → Slave (异步复制)
哨兵 Sentinel
自动故障转移 + 监控
集群 Cluster
16384 Slots / 数据分片 / Gossip
事件模型
事件驱动模型 (epoll / kqueue / select)
文件事件 (I/O) + 时间事件 (定时任务 / 过期键清理)
✦ 单线程模型 (核心命令处理) ✦ 原子操作 ✦ 10W+ QPS ✦ 毫秒级延迟 ✦ 丰富的数据结构
MySQL
主要架构
客户端层
mysql CLI
JDBC / Navicat
MySQL Connector
ORM (MyBatis/Sequelize)
MySQL Protocol (TCP)
连接管理
连接池管理 (Connectors)
认证 (Authentication) · 线程管理 (Thread Pool) · 连接限制 (max_connections)
SQL 接口
SQL Interface — DML / DDL / DCL / 事务控制
解析器
词法 / 语法解析器
Lexer + Parser → AST (抽象语法树)
预处理器
语义检查 · 表/列存在性校验 · 权限验证
优化器
查询优化器 (Query Optimizer)
基于代价优化 (CBO) · 执行计划选择 · 索引选择 · 表连接顺序优化 · 子查询优化
执行器
执行引擎 (Executor)
调用存储引擎 API · 逐行/批量返回结果
插件体系
UDF / 全文索引 / 审计
存储引擎层
InnoDB (默认引擎)
事务支持 · 行级锁 · MVCC · 聚簇索引 · 外键
MyISAM
表级锁 · 全文索引
Memory
内存存储 · Hash 索引
Server 层 API
InnoDB 引擎
InnoDB 内存结构
Buffer Pool
数据页 + 索引页缓存
Log Buffer
Redo Log 缓冲区
Adaptive Hash
自适应哈希索引
Change Buffer
二级索引变更缓存
InnoDB 磁盘结构
表空间 (.ibd)
数据 + 索引 (B+Tree)
Redo Log
WAL 日志 (循环写)
Undo Log
MVCC / 事务回滚
Doublewrite Buffer
部分写失效恢复
刷盘
文件系统
磁盘文件系统 (ext4 / xfs / NTFS)
硬件
物理磁盘 (SSD / HDD) + 内存 (Buffer Pool)
✦ Server 层 + 存储引擎分离 ✦ ACID 事务 ✦ MVCC 并发控制 ✦ B+Tree 索引 ✦ 可插拔引擎架构