|
|
# SUMMARY
|
|
|
|
|
|
* [简介](./README.md)
|
|
|
* [开篇词 | 阅读Redis源码能给你带来什么?](./docs/399839.md)
|
|
|
* [01 | 带你快速攻略Redis源码的整体架构](./docs/399866.md)
|
|
|
* [02 | 键值对中字符串的实现,用char*还是结构体?](./docs/400314.md)
|
|
|
* [03 | 如何实现一个性能优异的Hash表?](./docs/400379.md)
|
|
|
* [04 | 内存友好的数据结构该如何细化设计?](./docs/402223.md)
|
|
|
* [05 | 有序集合为何能同时支持点查询和范围查询?](./docs/404391.md)
|
|
|
* [06 | 从ziplist到quicklist,再到listpack的启发](./docs/405387.md)
|
|
|
* [07 | 为什么Stream使用了Radix Tree?](./docs/406284.md)
|
|
|
* [08 | Redis server启动后会做哪些操作?](./docs/406556.md)
|
|
|
* [09 | Redis事件驱动框架(上):何时使用select、poll、epoll?](./docs/407901.md)
|
|
|
* [10 | Redis事件驱动框架(中):Redis实现了Reactor模型吗?](./docs/408491.md)
|
|
|
* [11 | Redis事件驱动框架(下):Redis有哪些事件?](./docs/408857.md)
|
|
|
* [12 | Redis真的是单线程吗?](./docs/409927.md)
|
|
|
* [13 | Redis 6.0多IO线程的效率提高了吗?](./docs/410666.md)
|
|
|
* [14 | 从代码实现看分布式锁的原子性保证](./docs/411558.md)
|
|
|
* [15 | 为什么LRU算法原理和代码实现不一样?](./docs/412164.md)
|
|
|
* [16 | LFU算法和其他算法相比有优势吗?](./docs/413038.md)
|
|
|
* [17 | Lazy Free会影响缓存替换吗?](./docs/413997.md)
|
|
|
* [期中测试 | 这些Redis源码知识,你都掌握了吗?](./docs/417936.md)
|
|
|
* [期中测试题答案 | 这些问题你都答对了吗?](./docs/418672.md)
|
|
|
* [18 | 如何生成和解读RDB文件?](./docs/415563.md)
|
|
|
* [19 | AOF重写(上):触发时机与重写的影响](./docs/416264.md)
|
|
|
* [20 | AOF重写(下):重写时的新写操作记录在哪里?](./docs/416276.md)
|
|
|
* [21 | 主从复制:基于状态机的设计与实现](./docs/420285.md)
|
|
|
* [22 | 哨兵也和Redis实例一样初始化吗?](./docs/420759.md)
|
|
|
* [23 | 从哨兵Leader选举学习Raft协议实现(上)](./docs/421736.md)
|
|
|
* [24 | 从哨兵Leader选举学习Raft协议实现(下)](./docs/422625.md)
|
|
|
* [25 | Pub/Sub在主从故障切换时是如何发挥作用的?](./docs/422627.md)
|
|
|
* [加餐1 | Redis性能测试工具的使用](./docs/414582.md)
|
|
|
* [加餐2 | 用户Kaito:我是怎么读Redis源码的?](./docs/419664.md)
|
|
|
* [加餐3 | 从Redis到其他键值数据库的学习体会](./docs/423388.md)
|
|
|
* [加餐4 | RDB和AOF文件损坏了咋办?](./docs/423390.md)
|
|
|
* [用户故事 | 曾轼麟:世上无难事,只怕有心人](./docs/423423.md)
|
|
|
* [26 | 从Ping-Pong消息学习Gossip协议的实现](./docs/424827.md)
|
|
|
* [27 | 从MOVED、ASK看集群节点如何处理命令?](./docs/425404.md)
|
|
|
* [28 | Redis Cluster数据迁移会阻塞吗?](./docs/426420.md)
|
|
|
* [29 | 如何正确实现循环缓冲区?](./docs/427126.md)
|
|
|
* [30 | 如何在系统中实现延迟监控?](./docs/427537.md)
|
|
|
* [31 | 从Module的实现学习动态扩展功能](./docs/428471.md)
|
|
|
* [32 | 如何在一个系统中实现单元测试?](./docs/428474.md)
|
|
|
* [答疑1 | 第1~6讲课后思考题答案及常见问题答疑](./docs/429370.md)
|
|
|
* [答疑2 | 第7~12讲课后思考题答案及常见问题答疑](./docs/431791.md)
|
|
|
* [答疑3 | 第13~18讲课后思考题答案及常见问题答疑](./docs/432737.md)
|
|
|
* [答疑4 | 第19~24讲课后思考题答案及常见问题答疑](./docs/434382.md)
|
|
|
* [答疑5 | 第25~32讲课后思考题答案及常见问题答疑](./docs/436330.md)
|
|
|
* [结束语 | Redis源码阅读,让我们从新开始](./docs/437870.md)
|
|
|
* [结课测试 | 一套习题,测测你的Redis源码知识掌握程度](./docs/464431.md)
|