资讯详情

Redis 的原理和使用(6)

📅 2026/10/22 2:17:09 | 华诺云谱 👁 阅读
Redis 的原理和使用(6)
六、集群6.1 基本概念单机 Redis 受内存与计算资源限制数据量增长到需要水平扩展时就要考虑集群方案。Redis Cluster 把数据分散到多个节点上每个节点只保存一部分数据客户端连接任意节点都能完成操作整体对外仍然像一台 Redis搭建集群后每个节点都持有部分数据与自己的从节点节点之间通过 gossip 协议交换状态信息目录结构大致可以理解为“集群 → 分片 → 节点”6.2 数据分片算法数据按什么规则落到哪个分片是集群设计的核心问题。三种方案哈希求余、一致性哈希、哈希槽。1哈希求余对 key 计算哈希后对分片数取模例如 3 个分片时hash(hello) % 3 0键落在 0 号分片哈希求余实现直接但分片数量变化时绝大多数数据都要重新映射、搬迁到新分片成本很高。示例中从 3 个分片扩容到 4 个分片旧分片上的大量数据要靠搬迁重新分布2一致性哈希一致性哈希把 2^32 个哈希值组织成一个圆环节点按哈希值分布在环上key 沿环顺时针找到第一个节点即为其归属key 的归属由它在环上的位置决定落在哪个分片的管理区间就属于哪个分片用一个“取票机”的类比帮助理解乘客下车点固定离哪个取票机近就去哪个取票机取票取票机增减只影响邻近区间扩容时新节点插入环中只有环上相邻区间的数据需要搬迁其余分片不受影响3哈希槽Redis Cluster 实际采用哈希槽方案整个键空间固定划分成 16384 个槽位16384 16 × 1024 2^14key 通过 CRC16 计算后对 16384 取模得到槽位编号再按槽位分配到各个节点hash_slot crc16(key) % 16384槽位的分配由管理员或工具完成每个节点用位图记录自己持有的槽位。节点增减时只需要把相关槽位从旧节点迁移到新节点搬迁粒度从“全部数据”降为“部分槽位”扩容与缩容都更可控。6.3 主节点宕机与故障迁移集群中的主节点可以配置从节点。主节点故障后它的从节点会尝试提升为新主节点接管原主节点持有的槽位继续对外服务。整体逻辑与哨兵的故障转移类似只是作用范围从单个主节点扩展到集群内的每个分片。6.4 集群扩容扩容时先启动新节点并加入集群再把一部分槽位从已有节点迁移到新节点迁移过程中数据逐步搬迁完成后再更新槽位分配。相比哈希求余的全量搬迁哈希槽方案迁移的数据量小得多扩容对线上服务的影响也更可控。
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑