reids
的集群搭建方式有三种主从master-slave
、哨兵Sentinel
、集群Cluster
主从master-slave
数据库分为主数据库master
和从数据库slave
- 主数据库进行写操作,数据变化时自动同步到从数据库
- 从数据库一般都是只读,数据来源为主数据库
- 一个
master
对应多个slave
,一个slave
对应多个master
-
slave
挂了不影响其他的slave
,重启之后会从master
同步数据 -
master
挂了之后不影响slave
的读,但是不再提供写的服务,重启之后重新提供。 -
master
挂了之后不会重新选举master
-
master
设置密码之后slave
访问不需要密码
缺点
master
挂了之后不会重新选举master
哨兵Sentinel
解决了主从模式的痛点,master
挂了之后重新选举出master
特点
-
master
挂了之后Sentinel
会选择一个slave
作为master
,并修改所有节点的配置文件 -
master
重启之后将会作为slave
接收新的master
的同步消息 -
Sentinel
也可能挂掉,可以形成集群 - 多
Sentinel
配置的时候,Sentinel
之间也会自动监控 - 主从模式修改配置密码时
Sentinel
会将修改同步到配置文件 -
Sentinel
或Sentinel
集群可以管理多个主从Redis
-
Sentinel
最好不要和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配置打开即可。每个集群中至少需要三个主数据库才能正常运行,新增节点非常方便。
网友评论