文章字数:806,阅读全文大约需要3分钟
reids的集群搭建方式有三种主从master-slave、哨兵Sentinel、集群Cluster
主从master-slave
数据库分为主数据库master和从数据库slave
- 主数据库进行写操作,数据变化时自动同步到从数据库
- 从数据库一般都是只读,数据来源为主数据库
- 一个
master对应多个slave,一个slave对应多个master slave挂了不影响其他的slave,重启之后会从master同步数据master挂了之后不影响slave的读,但是不再提供写的服务,重启之后重新提供。master挂了之后不会重新选举mastermaster设置密码之后slave访问不需要密码
缺点
master挂了之后不会重新选举master
哨兵Sentinel
解决了主从模式的痛点,master挂了之后重新选举出master
特点
master挂了之后Sentinel会选择一个slave作为master,并修改所有节点的配置文件master重启之后将会作为slave接收新的master的同步消息Sentinel也可能挂掉,可以形成集群- 多
Sentinel配置的时候,Sentinel之间也会自动监控 - 主从模式修改配置密码时
Sentinel会将修改同步到配置文件 Sentinel或Sentinel集群可以管理多个主从RedisSentinel最好不要和Redis放在同一台机器上,防止一起挂掉Sentinel模式下客户端应当直接连接Sentinel这样master挂掉之后Sentinel可以自动感知新的master
工作机制
Sentinel每秒都向所知的master、slave、其它Sentinel发送pin- 如果有一个实例距离上一次回复
pin的时间超过down-after-milliseconds,实例就会被Sentinel标记成主观下线 master标记成主观下线之后监视这个master的Sentinel都要每秒一次的频率确认是否是主观下线- 当足够数量
Sentinel(配置)在指定时间内确认此master主观下线,则master的标记将改为客观下线 - 当
master被sentinel标记为客观下线时,sentinel向下线的master的所有slave发送INFO命令的频率会从 10 秒一次改为 1 秒一次 master重新向sentinel的pin命令回复,则master的主观下线状态将被移除
集群Cluster
当一台电脑上放不下信息时就可以采用集群的方式,分散存储信息
通过cluster可以实现主从和master重选功能,所以如果配置两个副本三个分片的话,就需要六个Redis实例。因为Redis的数据是根据一定规则分配到cluster的不同机器的,当数据量过大时,可以新增机器进行扩容。
使用集群,只需要将redis配置文件中的cluster-enable配置打开即可。每个集群中至少需要三个主数据库才能正常运行,新增节点非常方便。