一、概念篇
Redis集群的三种模式
1.主从模式
2.Sentinel模式
3.cluster模式
主从模式
一主多从的特点如图,整个集群只有一个master,
1.master负责写数据(master也可以读),slave负责读数据
2.master如果故障集群将无法提供写服务(因为不会选出新的master),将主服务器重启即可恢复。
3.当写操作发生时会master会将数据发送给slave,保证数据一致性
4.slave如果重启需要重新使用slaveof指令连接集群
链表式主从
特殊的主从模式,缺点是如果slave0故障了后边的slava1与slava2都无法正常同步数据了。优点是减轻了master的同步数据负担,master只负责它的从节点的数据同步。
sentinel模式
sentinel的意思是哨兵,顾名思义就是一个哨兵监控着Redis集群的master是否故障,如果master故障了将由sentinel开启投票选举出一个新的master,当故障的master重启时,故障重启的master将会成为新master的slave。
主从复制数据同步流程
slave启动完成时,立即向master发送同步请求。master收到同步请求后触发RDB策略,保存当前时间的master数据集,并把该RDB文件发送给slave,slave根据此RDB文件进行数据同步。
另外每当master执行写操作之后,都会将该操作发送至从服务器与之同步。
cluster模式
如果不需要扩容一般是不需要用到cluster模式的(不存在Redis内存放不下的情况),但如果Redis已经容量不够了则必须使用cluster。上面的主从模式只解决了高可用的问题,想容量大还得看cluster。假设我们现在的内存是16G,而Redis中要放的内存有48G,此时我们可以将Redis分为三块,如图(实际情况请对内存与需求做评估后决定)。
可见cluster实现了redis的水平扩容。
二、操作(说明:由于链表式主从是特殊的主从模式,配置方式与主从模式一致,故不再进行演示)
下面我们以Windows版本Redis演示集群操作
主从模式
1.下载Redis,GitHubWindows版本下载。
2.解压文件后复制两份同样的文件,修改文件夹名称方便识别。
3.修改每个文件夹中的 redis.windows.conf文件,将port改为对应的port,并且将dbfilename改为不同的值。
6379