Redis学习(Redis分片集群)
Redis分片集群
Redis主从虽然解决了高可用,高并发读的问题,但是依然有问题没有解决
- 海量数据存储
- 高并发写
分片集群特征
- 集群中有多个master,每个master保持不同数据
- 每个master都可以有多个slave节点
- master之间通过ping监测彼此健康状态
- 客户端请求可以访问集群任意节点,最终都会被转发到正确节点
散列插槽
Redis会把每一个master节点映射到0~16383共16384个插槽上
数据key不是与节点绑定,而是与插槽绑定,Redis会根据key的有效部分计算插槽值,key分为两种情况
- key包含{},且{}不为空,{}中的部分就是有效部分
- key中不包含{},那么整个key都是有效部分
数据与插槽绑定好处就是节点宕机之后还能够不丢失数据并且快速恢复,并且方便数据转移
Redis判断哪个key应该在哪个实例上
- 将16384个插槽分配到不同的实例
- 根据key的有效部分计算哈希值,对16384取余
- 余数作为插槽,寻找插槽所在的实例
集群伸缩
就是添加或者移除节点
命令为
add-node new_host:new_port existing_host:existing_port
reshard命令可以重新分配插槽
故障转移
这里就不需要哨兵机制
1.该实例与其它实例失去链接
2.疑似宕机
3.确定下线,自动提升一个slave为新的master
数据迁移
利用cluster failover命令可以手动让某个master宕机,切换到执行cluster failover命令的slave节点,实现无感知的数据迁移
流程图如下:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!