CS-Notes 学习笔记
面试常问Java 后端 · Redis 与缓存

Redis Cluster 怎样分配数据?扩容时怎样迁移?

先自己想一想,再看参考要点

参考要点

  • 键空间分为 16384 个哈希槽,CRC16(key) % 16384 计算键所属的槽,每个主节点负责一部分槽
  • 访问了不负责这个槽的节点会收到 MOVED 重定向,客户端缓存槽映射
  • 多键命令要求键在同一个槽,可以用 {} 哈希标签
  • 扩容时按键迁移槽:源节点标记 MIGRATING、目标节点标记 IMPORTING,用 MIGRATE 分批搬键,已迁走的键返回 ASK,客户端先发 ASKING 再访问目标节点,全部迁完后用 CLUSTER SETSLOT 把槽分给新节点
在学习站中自测这道题看这道题所在的一天

学习站:先用面试题自评定级,按水平和面试日期排出每天的计划,自评过的题按间隔复习。免费、无需注册,记录只保存在自己的浏览器中。