Redis主从配置
1、为什么使用master-slave
单个服务器的情况下,如果这个服务器发生故障,那数据肯定就GG了。整个服务器要承受所有的请求负载,所以redis提供了复制功能(replication)功能。将数据库复制多个副本,然后放在不同的服务器上(放在一个服务器上,就是不同的redis实例咯)。这样即使一台数据库出现故障,其他的还是能提供服务,保证了数据的可靠性。redis复制中,数据库有两种,一种就做主数据库(可读可写),另一种叫做从数据库(一般就是只读的,但是可以接受从主数据库同步过来的数据)。主从复制图如下:

2、redis的Master-Slave的原理

接下来配置两个slave,将6379.conf复制两份,分别重命名为slave_1.conf,slave_2.conf。因为6379.conf的requirepass,bind已经改成了123456和0.0.0.0,那么现在slave_1.conf,slave_2.conf的requirepass和bind也都是0.0.0.0啦~~~~

配置slave_1.conf,修改端口号,本实例的监听端口

修改slaveof,(这里master如果是其他的机器,可以换成其他的ip地址和端口,必须是master的ip和端口)

修改masterauth,注意这里masterauth的密码需要和master的密码一样

配置slave_2.conf,修改端口号,本实例的监听端口

修改slaveof,(这里如果master是其他的机器,可以换成其他的ip地址和端口,必须是master的ip和端口)

修改masterauth,注意这里masterauth的密码需要和master的密码一样

简单的单体,master-slave配置完毕了,见证效果的时候了~~~~~~~~~~~~~~~~~
3、测试master-slave效果
1、开启master,slave_1,slave_2服务。(以前我每次开启redis服务都会有很多信息,还必须开启一个窗口放那里,其实redis只需要设置为守护进程就可以了下下面这样。我们只需要打开配置文件找到daemonize将默认的no改成yes就可以了,只怪学艺不精咯~~)

我们看看redis的进程。

服务已经顺利开启了,离我们的目标越来越近啦 ,嘿嘿嘿..................有点小激动~~~
2、客户端连接redis,测试是否真的能够主从同步了。
先看master有没有数据,keys*是没有数据的。(客户端连接服务器的时候 -p指定端口,--raw可以防止redis客户端中文乱码)

我们看看slave_1.conf,slave_2.conf是否有数据


现在master,slave_1,slave_2都没有数据。我先把6381服务停掉,先想master里面写入数据,然后观察slave_1,再启动slave_2,观察slave_2中的数据。


我要开始向master里面写数据了,请注意仔细看咯:

我们去看看slave_1中数据是什么样的

数据真的全部同步过来啦,开心~~~~
我的slave_2好像还是关闭的,我赶紧开启看看:

哇哦,刚才slave_2我没有开启,现在也自动同步过来了,redis果然强悍,膜拜~~~~~~~~~~~~~~~~~~~~
我删两个数据看看(注意:这里slave默认是设置的readonly,只能在master上去操作,slave只能被master同步,保证数据的一致性。如果想slave也能读写就需要修改conf配置文件中的slave-read-only,将yes改为no,slave改成可读写后,如果操作了slave的数据,是不会被同步到master的)

果然删除一样的同步了,可靠性确实是高。
总结:1、我起初开启slave_1,关闭slave_2,然后再开启slave_2,数据与master完全一致,可以看出redis将db完整的同步到了slave。
2、我们设置master,slave设置为readonly,这样可以实现redis数据的读写分离了。
3、主从配置也可以达到容灾,数据备份作用。
浙公网安备 33010602011771号