Redis 集群原理

Redis集群通过哈希算法将数据分散到多个节点,缓解单节点压力并扩展存储能力。客户端利用hash槽与节点对应表查询数据,处理节点间的MOVED和ASK重定向。节点间采用gossip协议进行非实时通信,确保信息最终一致性。
摘要由CSDN通过智能技术生成

本文是对(46条消息) Redis集群原理详解_张维鹏的博客-CSDN博客_redis集群工作原理文章的个人总结

为什使用集群

有了哨兵,已经可以实现主节点自动切换,读写分离,但仍存在一些问题
1.写操作仍集中在主节点上,主节点压力过大,可能处理不了大量写请求。
2.主节点性能很好,但内存不足以存储大量数据。
而使用集群可以缓解这些问题,通过牺牲一致性来得到高可用。


集群数据分配

集群使用hash算法,将所有数据分配到16384个哈希槽中,然后使hash槽与节点相连,这种分配方式既能将数据合理的分配到各个节点中,又能实现数据与节点间解耦,避免hash槽动态分配时过于麻烦(只要重新分配hash槽到新节点就可以了)。


数据查询方式

每个客户端(Jedis或Lettuce)都会有一个hash槽与节点对应表
1.客户端依据hash算法和hash对应表找到key所在节点
2.向节点请求数据,如找到数据则返回,查找结束。
如hash槽已迁移到其他节点,则通过moved命令返回新的hash槽与节点对应关系,更新客户端对应表。
如hash槽正在迁移,则通过ask命令返会hash槽现在所在节点,不更新客户端对应表。
3.依据返回的对应关系重定向到新节点。
4.如找到数据则返回,否则跳出转到步骤1,最多重复5次。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值