Redis集群的工作原理?gossip协议?写和读的流程?CRC16再取余这个计算在client还是服务端?可以决定哪个key放在哪个节点吗?

目录

Redis集群的工作原理

Gossip协议

写和读的流程

CRC16再取余的计算位置

决定key放在哪个节点

总结


Redis集群的工作原理

Redis集群通过分片(sharding)实现数据分布,每个节点存储部分数据。集群由多个节点组成,每个节点负责一部分哈希槽(hash slot),共有16384个槽。数据根据键的哈希值分配到相应的槽中,每个槽对应一个节点。

Gossip协议

Gossip协议用于节点间的通信,确保集群状态一致。节点通过随机选择其他节点交换信息,传播集群状态(如节点加入、退出、故障等)。这种去中心化的通信方式具有高容错性和可扩展性。

写和读的流程

  1. 写流程

    • 客户端计算键的哈希值,确定对应的哈希槽。

    • 客户端将写请求发送到负责该槽的节点。

    • 节点处理写请求并返回结果。

  2. 读流程

    • 客户端计算键的哈希值,确定对应的哈希槽。

    • 客户端将读请求发送到负责该槽的节点。

    • 节点处理读请求并返回数据。

CRC16再取余的计算位置

CRC16再取余的计算在客户端进行。客户端使用CRC16算法计算键的哈希值,再对16384取余,确定键对应的哈希槽,然后找到负责该槽的节点并发送请求。

决定key放在哪个节点

键的存放位置由CRC16哈希值决定,客户端无法直接指定。但可以通过以下方式间接控制:

  • 哈希标签:使用{}指定部分键参与哈希计算,如{user123}.profile{user123}.settings会被分配到同一节点。

  • 手动分片:在应用层预先计算哈希值,确保某些键分配到特定节点。

总结

Redis集群通过分片和Gossip协议实现数据分布和节点通信。客户端负责计算键的哈希槽,无法直接指定键的存放节点,但可以通过哈希标签或手动分片间接控制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值