深入 Redis 源码,剖析其设计精髓与实现细节。从数据结构到核心架构,全方位解读 Redis 高性能背后的秘密。
Archive
文章
-
Redis 源码阅读:03. Dict (字典与渐进式 Rehash)
4 min read深度剖析 Redis 核心数据结构 Dict。双哈希表设计、哈希冲突解决、以及最精彩的渐进式 Rehash 机制详解。
-
Redis 源码阅读:13. 网络层 (连接、IO 与 RESP)
2 min readRedis 如何处理新连接?如何读取请求并解析 RESP 协议?输出缓冲区是如何工作的?
-
Redis 源码阅读:23. 事务 (Transaction)
2 min readRedis 事务支持 ACID 吗?为什么 Redis 不支持回滚?MULTI, EXEC, WATCH 原理详解。
-
Redis 源码阅读:21. Sentinel (哨兵模式)
2 min readSentinel 如何实现自动故障转移?主观下线与客观下线的区别,Raft 算法在 Leader 选举中的应用。
-
Redis 源码阅读:18. RDB (快照持久化)
2 min readRDB 文件是如何生成的?fork 子进程与 Copy-On-Write 技术详解。
-
Redis 源码阅读:07. QuickList (快速列表)
2 min readRedis List 类型的底层实现。QuickList 是如何结合双向链表和压缩列表的优点,既省内存又高性能?
-
Redis 源码阅读:10. List, Hash, Set, ZSet 的编码演进
2 min readRedis 集合类型的底层编码是如何动态切换的?一文看懂 List, Hash, Set, ZSet 的编码策略。
-
Redis 源码阅读:09. String 对象 (int, embstr, raw)
2 min readRedis String 只有一种吗?不,它有三种编码:int, embstr, raw。它们有何区别?Redis 何时会进行编码转换?
-
Redis 源码阅读:24. Lua 脚本
2 min readRedis 为什么选择 Lua?脚本原子性是如何保证的?EVAL 命令执行原理。
-
Redis 源码阅读:06. SkipList (跳表)
2 min read为什么 Redis 的 ZSet 选择跳表而不是红黑树?深入理解跳表的概率平衡机制与实现细节。
-
Redis 源码阅读:系列大纲与学习路径
5 min readRedis 源码阅读系列博客的完整大纲。规划了从底层数据结构、对象系统、核心架构、数据库实现、持久化到分布式特性的七大阶段阅读路线。
-
Redis 源码阅读:15. DB 结构 (键空间与过期字典)
1 min readRedis 数据库的内部结构是怎样的?redisDb 结构体详解,键空间 dict 和过期字典 expires。
-
Redis 源码阅读:19. AOF (日志持久化)
2 min readAOF 如何保证数据不丢失?三种刷盘策略的实现原理,以及 AOF 重写 (Rewrite) 机制。
-
Redis 源码阅读:12. AE 事件库 (Reactor 模式)
2 min readRedis 高并发的核心秘密:AE 事件库。深入解析 Redis 的 Reactor 模型与 IO 多路复用实现。
-
Redis 源码阅读:开篇与源码地图
6 min read开启 Redis 源码阅读之旅,梳理 Redis 源码目录结构,规划阅读路径。不积跬步,无以至千里。
-
Redis 源码阅读:04. ZipList & ListPack (内存紧凑之道)
4 min read解析 Redis 为了省内存而设计的压缩列表。ZipList 的连锁更新灾难是什么?新一代 ListPack 又是如何完美解决这个问题的?
-
Redis 源码阅读:02. SDS (Simple Dynamic String)
5 min read深入解析 Redis 的 SDS 字符串结构。为什么 Redis 不直接使用 C 语言字符串?SDS 如何实现二进制安全、内存预分配与惰性释放?
-
Redis 源码阅读:14. 命令执行模型 (processCommand)
2 min readRedis 接收到命令后是如何执行的?查找命令表、权限校验、参数校验、调用执行函数、记录慢查询日志。
-
Redis 源码阅读:17. 内存淘汰机制 (LRU & LFU)
2 min read当内存满了,Redis 如何选择要牺牲的 Key?深入解析 LRU 近似算法与 LFU 的实现。
-
Redis 源码阅读:11. Server 启动流程 (main 函数)
2 min readRedis 服务器启动时都做了什么?从 main 函数开始,一步步追踪 Redis 的初始化过程。