Redis集群工作原理
数据存储原理
分片数据存储原理: 根据hash一致性算法实现数据存储.
Hash一致性运算发生在服务器端.
在存储数据前已经计算完成存储到哪台redis服务器中.
分片中存在的问题:
分片的数据是用户通过服务器程序计算进行存储.用户也可以利用redis的客户端进行非法的操作.修改分片中的数据
集群数据存储原理:虚拟槽分区算法
这个槽是用来存放缓存信息的单位,在 Redis 中将存储空间分成了 16384 个槽,也就是说 Redis Cluster 槽的范围是 0 -16383(2^4 * 2^10)
缓存信息通常是用 Key-Value 的方式来存放的,在存储信息的时候,集群会对 Key 进行 CRC16 校验并对 16384 取模(slot = CRC16(key)%16383)
得到的结果就是 Key-Value 所放入的槽,从而实现自动分割数据到不同的节点上。然后再将这些槽分配到不同的缓存节点中保存
参考文档:
1、https://www.jianshu.com/p/84dbb25cc8dc
2、https://baijiahao.baidu.com/s?id=1663270958212268352&wfr=spider&for=pc
3、https://blog.csdn.net/hguisu/article/details/82979320
Redis集群宕机条件
宕机条件:Redis集群宕机的条件是主节点宕机则集群奔溃
例子:9个redis节点 3主6从 节点宕机多少次集群奔溃
5-7台集群奔溃,超过节点半数~(节点总数-(主机数-1))
条件说明:
- Redis集群中当节点宕机后,由主节点进行推选.
- 如果当前节点没有从节点时.从其他主节点中借用多余的从节点.
- 当主节点借不到从节点时,主节点宕机则集群宕机