Redis主从模式
不管任何程序,只运行一个实例都是不可靠的,一旦因为网络原因导致所在机器不可达,或者所在服务器挂掉,那么这个程序将不能对外提供服务了,Redis也是一样的。同时,将数据完全存储在单个redis中也会存在数据备份和数据量较大造成性能降低的问题。Redis的一个激动人心的功能是可伸缩性,它采用主从复制的方式提供高度可靠性。Redis的主从复制功能非常强大,一个master可以拥有多个slave,而一个slave又可以拥有多个slave,如此下去,形成了强大的多级服务器集群架构。主机和从机的数据完全一致,主机支持数据的写入和读取等各项操作,而从机则只支持与主机数据的同步和读取,也就是说,客户端可以将数据写入到主机,由主机自动将数据的写入操作同步到从机。主从模式很好的解决了数据备份问题,并且由于主从服务数据几乎是一致的,因而可以将写入数据的命令发送给主机执行,而读取数据的命令发送给不同的从机执行,从而达到读写分离的目的。
Redis主从模式的注意点
- 默认配置下,master节点可以进行读和写,slave节点只能进行读操作,写操作被禁止
- 不要修改配置让slave节点支持写操作,没有意义,因为,首先写入的数据不会被同步到其他节点,其次,当master节点修改同一条数据后,slave节点的数据会被覆盖掉
- master节点挂了以后,redis就不会对外提供写服务了,因为剩下的slave节点不会成为master
- master节点挂了以后,不影响slave节点的读,master节点启动后Redis将重新对外提供写服务。
- slave节点挂了不影响其他slave节点的读和master节点的读和写,重新启动后会将数据从master节点同步过来
对有密码的情况说明,当master节点设置密码时:
* 客户端访问master需要密码;
* 启动slave需要密码,在配置中进行配置即可;
* 客户端访问slave不需要密码
Redis主从模式搭建
主从模式的搭建还是很简单的,官网的介绍就更加简单了,只需要在配置文件中加上一行配置:
slaveof 192.168.1.1 6379
指明master的ip和端口号就可以了,实际上真的这么简单。redis主从模式的配置可以理解为多个不同的redis实例通过一定的配置告知其相互之间的主从关系。主从模式的配置主要的配置点有两个:当前实例端口号和当前实例是主机还是从机,是从机的话其主机的ip和端口是什么。
我们拿上面安装好的一个Redis作为master,然后再用一个linux系统克隆一份作为slave,并修改其IP为172.24.4.184。
修改slave的redis.conf配置文件:
slaveof 172.24.4.183 6379 (映射到主服务器上)
也可以通过redis-cli 连接到从节点服务器,执行下面命令:
slaveof 172.24.4.183 6379
如果master设置了验证密码,还需配置masterauth。
这里可能会遇到一点问题:
Error reply to PING from master: ‘-DENIED Redis is running in protected mode because protected mode is enabled, no bind address was specified, no authentication password is requested to clients.
是说处于保护模式,只能本地链接,我们需要修改配置文件redis.conf
解决方法很简单,给主机配置密码
将# requirepass foobared取消注释,修改密码
或者设置 protected-mode no,也可通过命令config set protected-mode no
配置完之后启动slave的Redis服务,OK,主从配置完成。下面测试一下:
在master和slave分别执行info命令,查看结果如下:
master:
slave:
配置就是这样,更多的细节没有一一列举,有问题还请多多指正
参考:
https://www.cnblogs.com/yiwangzhibujian/p/7053845.html
https://blog.csdn.net/xiaoxiaoyusheng2012/article/details/82056056