Redis 学习站

从入门概览到源码导读的完整 Redis 学习路径

25 个主题 · 16 个核心 C 源码模块 · 数据源 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 行

构建部署 2

社区贡献 3