大家好,我是 31 岁的小米,一个热爱折腾技术、喜欢一边踩坑一边做咖啡的程序员。
前段时间陪朋友准备 Java 社招面试,他问了我一句:
“小米,Redis 的哈希槽到底是怎么回事?我每次面试都被问,答得似懂非懂……”
我一听,熟悉的面试 PTSD 猛地从脑子里蹿出来,仿佛又看到那年面试官微微抬起眼镜、露出“我就等你卡壳”的表情。于是我拍了拍他肩膀说:
“兄弟,关于 Redis 哈希槽,我给你讲个故事 —— 听完你不仅懂了,还能反问面试官。”
先从一个小镇说起:16384 个房间的城市
想象一下,有一座神奇的小镇。镇上有 16384 间房间,编号从 0 到 16383。每一个房间,代表着 Redis Cluster 的一个“哈希槽”(Hash Slot)。
Redis 官方设计 Redis Cluster 时,决定不采用一致性哈希(像很多分布式系统那样),而是采用这种固定槽位机制。为什么?
因为一致性哈希迁移数据太麻烦,而槽位更像是房屋产权登记:只要告诉你“第 1000-2000 号房子属于 A 节点”,你就能快速定位。
这个世界观建立好之后,你会发现:
- 数据不直接分配给节点
- 而是分配给槽位(Slot)
- 然后槽位再分配给不同的 Redis 节点
换句话说:
Redis Cluster 的本质不是“节点分数据”,而是“节点分槽,槽分数据”。
这一句话,面试官听了都得点头。
那数据怎么知道自己属于哪个槽?
继续想象:你把一把钥匙(Redis 的 Key)扔进这个小镇。小镇有一个超级强的“分拣机”,叫 CRC16

最低0.47元/天 解锁文章
759

被折叠的 条评论
为什么被折叠?



