架构
FerrumKV 是一个独立的静态二进制文件。Tokio 运行时同时驱动 RESP2 监听器和内置 Web 控制台,两个前端共享同一个 KvEngine 实例——因此你在控制台中做的任何操作都会立即对已连接的 Redis 客户端可见。
组件概览
请求处理流水线
- 网络层 —
TcpListener在:6380上接受连接;每个连接被交给一个 Tokio 任务处理。 - 处理层 — RESP2 解析器将字节流转换为命令数组,执行器针对
KvEngine运行命令,编码器序列化响应。 - 存储层 —
KvEngine持有一个HashMap<Vec<u8>, ValueEntry>,由Arc<RwLock<…>>保护。后台清理任务淘汰过期键。 - 持久化层 — 启用 AOF 后,每个写命令会被追加(并根据
--appendfsync策略 fsync)到ferrum.aof;启动时回放该文件以恢复状态。 - 控制台 — 独立的 HTTP 监听器在
:6381上运行,共享同一引擎,展示键值、实时统计和命令终端。
并发模型
服务器基于 Tokio 构建。RESP 连接和控制台作为协作任务在同一运行时上运行,因此无需跨进程同步状态。存储层由单个 RwLock 保护,在保持代码简洁的同时仍能并发服务多个客户端。