后室:恐惧免安装中文版
2.06G · 2025-09-28
学习如何通过从零编码一个 Redis 服务器来构建真实世界的软件。如果你能写出一个 Redis 服务器,你几乎就能写出任何软件!因为它会教给你两项根本技能:
网络编程。 更高阶段的编程是“面向多台机器的编程”。想想 HTTP 服务器、RPC、数据库、分布式系统。
数据结构。 有人说数据结构没用,只在 LeetCode 题目里用得上。Redis 就是最好的反例。很多基础数据结构有非常有用的应用,但前提是你得了解得足够多,才能用得出来。
Redis 是最流行的内存键值存储,主要用于缓存,因为没有任何存储比内存更快。缓存服务器几乎是不可避免的,因为它是最容易实现的扩容手段。一个缓存可以把慢速的数据库查询从整体路径中剥离出去。
从本质上说,缓存服务器就是一个通过网络访问的 map<string, string>
。但在 Redis 里,“value” 不只是字符串,它还可以是多种数据结构:哈希表、列表或有序集合,从而支持排名、列表分页等复杂场景。这也是 Redis 被称为“数据结构服务器(data structure server)”的原因。
用费曼的话说:“What I cannot create, I do not understand(不能创造,就不能理解)。” “创造”和“理解”存在不同层次。把一堆库粘在一起当然也是“创造”,但你不必止步于此——你可以创造更底层的东西,理解更基础的原理。
目标并不是重复造轮子,而是掌握能让你与众不同的基础。你会做出更好的技术决策,更擅长调试,也会拥有更多的职业选择。
Redis 的第一个版本是用 TCL 脚本写的,但那只是玩具版;最终产品是用 C 实现的。做一个玩具版是理解事物的好方法,但总还有更多值得学习的内容: