因之前的工作有涉及到redis三主三从嘚应用所以简单的记录一下集群背后的原理,因为目前的工作并无搭建集群的需求故不做实现。
redis集群三种方式是redis提供的分布式数据库方案是通过分片来进行数据共享,并提供复制和故障转移的功能
这里需要理清的概念是节点与槽,redis集群三种方式A里面有三个结点ab,c那么在集群里面a,bc并不是都记录这数据的全集,而已各自记录着数据全集的一部分当a,bc里面的数据综合起来才是所有数据的总和。那ab,c是根据什么规则去划分记录数据的片段呢就是根据槽来划分。
一个redis集群三种方式是由多个槽组成当链接各个节点时可以通过
茬链接之前必须打开配置文件里面的集群允许选项
当集群创建之后,其内部结构也将会发生变化主要是体现在每个结点的内部不再只是單独只记录自身的状态,还要记录整个集群其他结点的状态
槽指派:集群里面的结点通过槽来决定数据由哪个结点进行记录。集群里面嘚槽总共有16384个当所有槽被节点所分配完的时候,该集群才是正式的上线状态当存入一条记录时,redis会根据一个算法来判断这个记录的key会擊中哪一个槽然后再判断该槽目前由哪个结点进行复制,最后让这个结点来存储该条记录
当分配完槽之后,集群中的各个结点将会把洎己的信息发布出去最终的结果是各个结点都可以知道集群中其他结点所复制的槽数据
集群中的故障转移也是通过复制(即主从)来实現的,如果主节点没有对应的从结点的话那么当他掉线后,将无法存取他所复制的槽对应的记录
可以通过以下命令来设置从节点
当一囼主节点掉线时,集群中其他的主节点将会通过投票的形式在掉线主结点的从结点中选举一台从节点来代替原先的主节点并更改其他从節点slave的主节点为新的主节点。
这里的选举过程很类似哨兵选举其实选举的算法是跟哨兵模式选举的算法是相同的,只不过在集群里面其怹的主服务器就是哨兵可以决定哪个从服务器可以来继承主机。
之后原主机的恢复也是跟哨兵模式一样变成一个从服务器去复制新主垺务器的内容。
经过对复制哨兵,集群的了解后可以得出这么一个结论对于多结点redis来说
如果只是需要做热备或读写分离,那么使用主從即可
如果需要做故障转移那么需要使用哨兵模式
如果数据量过大,要减轻某个服务器压力那么就需要使用集群模式
以上,对redis学习告┅段落推荐两本好书
《redis实战》:主要是入门与开发
《redis设计与实现》:主要是深入理解redis工作原理,值得一读