redis源代码分析 - hash table
这篇深入剖析了Redis核心数据结构之一——哈希表(dict)的实现。作者从`dict.c`源码出发,揭示了Redis如何用一个结构同时管理两张哈希表(`ht[0]`和`ht[1]`),并在`rehash`过程中巧妙地通过“渐进式迁移”来避免阻塞。 文章的关键在于讲清楚了“渐进式rehash”的运作机制:当需要扩容或收缩时,Redis并不会一次性完成迁移,而是将rehash过程分散到后续的每一次增删改查操作中,每次只迁移一小部分。同时,它详细说明了触发rehash的负载因子阈值,以及在rehash期间如何通过一个标志位确保操作的正确性。 这种设计使得即使在处理百万级键值的大型哈希表时,Redis也能保持极低的延迟。文章将这个精巧的工程实现拆解得清晰易懂,展现了Redis为追求高性能而做出的底层权衡与智慧。