Redis 学习站
从入门概览到源码导读的完整 Redis 学习路径
关于本教程
Redis(Remote Dictionary Server)是一个开源的内存数据结构存储系统,可用作数据库、缓存、流引擎和消息中间件。 本学习站基于 redis/redis 官方仓库构建, 覆盖五大主题域:入门概览、数据类型、源码导读、构建部署、社区贡献。
源码导读部分针对 src/ 顶层 16 个核心 C 模块(server.c、networking.c、dict.c、replication.c、cluster.c 等)逐个拆解,
标注 LOC、模块职责、关键数据结构与阅读路径建议。
内容反馈:前往 原仓库 issue 区 提交。
入门概览 3
数据类型 1
源码导读 16
server.c — 主服务器与命令分派
服务器入口、命令表、事件循环驱动、配置加载。8K+ 行代码核心。
8290 行networking.c — 网络与客户端管理
TCP 连接管理、客户端结构、命令读取与响应写入。
5921 行dict.c — 哈希表数据结构
Redis 自实现的渐进式 rehashing 字典,是数据库底层核心。
2341 行object.c — 对象系统
robj 抽象层:String/List/Hash/Set/ZSet 等类型的统一封装。
1964 行db.c — 数据库操作
键空间操作、过期、LRU、信号槽(signaling)。
3959 行replication.c — 主从复制
PSYNC/SYNC 协议、复制积压缓冲、命令传播。
5458 行cluster.c — 集群模式
Gossip 协议、槽位管理、ASK/redirected 错误、重分片。
2373 行rdb.c — RDB 持久化
二进制快照格式、保存与加载。
4917 行aof.c — AOF 持久化
Append Only File 日志、重写机制、混合持久化。
3185 行t_string.c — String 类型实现
SET/GET/APPEND/INCR 等字符串命令底层。
1684 行t_list.c — List 类型实现
quicklist + ziplist + linkedlist 三种编码。
1755 行t_hash.c — Hash 类型实现
listpack + hashtable 双编码。
4392 行t_set.c — Set 类型实现
intset + hashtable 双编码。
2048 行t_zset.c — Sorted Set 实现
skiplist + ziplist + listpack,跳表是核心。
5034 行ae.c — 事件循环抽象层
包装 epoll/kqueue/select,统一接口给上层使用。
517 行anet.c — 网络抽象
BSD socket 封装:bind/listen/accept/non-blocking。
813 行