Archive
文章
-
Redis 源码阅读:开篇与源码地图
开启 Redis 源码阅读之旅,梳理 Redis 源码目录结构,规划阅读路径。不积跬步,无以至千里。
-
Redis 源码阅读:17. 内存淘汰机制 (LRU & LFU)
当内存满了,Redis 如何选择要牺牲的 Key?深入解析 LRU 近似算法与 LFU 的实现。
-
Redis 源码阅读:23. 事务 (Transaction)
Redis 事务支持 ACID 吗?为什么 Redis 不支持回滚?MULTI, EXEC, WATCH 原理详解。
-
Redis 源码阅读:07. QuickList (快速列表)
Redis List 类型的底层实现。QuickList 是如何结合双向链表和压缩列表的优点,既省内存又高性能?
-
Redis 源码阅读:03. Dict (字典与渐进式 Rehash)
深度剖析 Redis 核心数据结构 Dict。双哈希表设计、哈希冲突解决、以及最精彩的渐进式 Rehash 机制详解。
-
Redis 源码阅读:13. 网络层 (连接、IO 与 RESP)
Redis 如何处理新连接?如何读取请求并解析 RESP 协议?输出缓冲区是如何工作的?
-
Redis 源码阅读:04. ZipList & ListPack (内存紧凑之道)
解析 Redis 为了省内存而设计的压缩列表。ZipList 的连锁更新灾难是什么?新一代 ListPack 又是如何完美解决这个问题的?
-
Redis 源码阅读:06. SkipList (跳表)
为什么 Redis 的 ZSet 选择跳表而不是红黑树?深入理解跳表的概率平衡机制与实现细节。
-
Redis 源码阅读:系列大纲与学习路径
Redis 源码阅读系列博客的完整大纲。规划了从底层数据结构、对象系统、核心架构、数据库实现、持久化到分布式特性的七大阶段阅读路线。
-
Redis 源码阅读:26. 完结篇 - 更多特性
HyperLogLog, Geo, Bitmap, Module System... Redis 的世界远比想象中精彩。系列总结与未来展望。
-
Redis 源码阅读:10. List, Hash, Set, ZSet 的编码演进
Redis 集合类型的底层编码是如何动态切换的?一文看懂 List, Hash, Set, ZSet 的编码策略。
-
Redis 源码阅读:11. Server 启动流程 (main 函数)
Redis 服务器启动时都做了什么?从 main 函数开始,一步步追踪 Redis 的初始化过程。
-
Redis 源码阅读:02. SDS (Simple Dynamic String)
深入解析 Redis 的 SDS 字符串结构。为什么 Redis 不直接使用 C 语言字符串?SDS 如何实现二进制安全、内存预分配与惰性释放?
-
Redis 源码阅读:09. String 对象 (int, embstr, raw)
Redis String 只有一种吗?不,它有三种编码:int, embstr, raw。它们有何区别?Redis 何时会进行编码转换?
-
Redis 源码阅读:22. Cluster (集群模式)
Redis Cluster 是如何实现数据分片的?Hash Slot、Gossip 协议、MOVED 重定向原理详解。
-
Redis 源码阅读:05. IntSet (整数集合)
Redis Set 类型的底层优化。当集合中只有整数时,Redis 如何用 IntSet 节省内存?什么是编码升级?
-
Redis 源码阅读:19. AOF (日志持久化)
AOF 如何保证数据不丢失?三种刷盘策略的实现原理,以及 AOF 重写 (Rewrite) 机制。
-
Redis 源码阅读:15. DB 结构 (键空间与过期字典)
Redis 数据库的内部结构是怎样的?redisDb 结构体详解,键空间 dict 和过期字典 expires。
-
Redis 源码阅读:08. redisObject (对象系统核心)
Redis 如何在底层数据结构之上构建出 String, List, Hash 等对象?redisObject 结构体详解,类型、编码与 LRU。
-
Redis 源码阅读:21. Sentinel (哨兵模式)
Sentinel 如何实现自动故障转移?主观下线与客观下线的区别,Raft 算法在 Leader 选举中的应用。