📚 分类
redis
🕵🏽‍♀️ 问题描述
redis分片集群中数据是怎么存储和读取的?
👨‍🏫 问题讲解
❒ redis分片集群引入了哈希槽的概念,redis集群有16384个哈希槽,每个key通过CRC16校验后对16384取模来决定放置哪个槽,集群的每个节点负责一部分hash槽。

master1 0      ↔  5460
master2 5461   ↔  10922
master3 10923  ↔  16383

set name itheima → CRC16计算name的hash值 → 666666%16384 = 11306  (master3)
set {aaa}name itheima → CRC16算法计算aaa的hash值 → 888888 % 16384 = 4152 (master1)
🏳️‍🌈 问题总结
❒ redis分片集群引入了哈希槽的概念

✔ redis 集群有 16384 个哈希槽
✔ 将16384个插槽分配到不同的实例
✔ 读写数据:根据key的有效部分计算哈希值,对16384取余(有效部分,如果key前面有大括号,大括号的内容就是有效部分,如果没有,则以key本身做为有效部分)余数做为插槽,寻找插槽所在的实例
📖 问题信息
📈 浏览次数:16 | 📅 更新时间:2025-12-04 08:29:07
📦 创建信息
🏷️ ID:18 | 📅 创建时间:2024-10-09 11:15:01