Redis 的源代码真的是挺值得一读的,尤其是你想搞明白它为什么这么快、这么稳的时候。它的链表实现就蛮经典的,用双向链表加迭代器,配上自定义的函数,扩展性强。还有字符串那块,自己造了个叫的动态字符串,比标准 C 字符串用起来舒服多了,拼接、扩容一条龙搞定,性能也不错。

哈希表的部分设计也蛮有意思,支持渐进式扩容,避免一次性 resize 卡住主线程,而且用两个表搞定 rehash 过程,思路挺巧的。还有它的事件循环,单线程但响应也快,全靠那个ae.c事件驱动架构。基本上你用过epoll或者select的都能秒懂。

另外,内存管理和网络那块,Redis 自己造了一套轻量的内存分配器zmalloc,套接字库anet也封装得比较清爽,连 TCP 都能一行搞定。虚拟内存和持久化机制(RDB 和 AOF)也讲得比较明白,看懂源码后对 Redis 的备份和数据恢复会更有底。

,如果你平时写服务端、搞存储或者对高性能编程感兴趣,看看 Redis 源码挺有收获的。顺带一提,链表和哈希表部分的实现对数据结构掌握也有。如果你想深入了解持久化机制或链表细节,可以参考下面这些链接,内容也还不错。