redis主从复制
单个的redis可以自己进行持久化,然后把数据保存到自己的硬盘中存着,但是时间久了,机器老化,硬盘坏了怎么办?或者由于不可抗力比如火灾等情况,基于这种情景,redis提供了主从复制的机制;
主从复制:例如一个主节点redis,两个从节点redis,两个从节点的服务器随便放在那里都行,放家里还是放在公司都行;
通常情况下主节点向外提供服务,从节点只是同步主节点中的数据不向外提供服务,所以当主节点的redis被由于不可抗力挂了,那么redis就用不了了;
注意:主从复制架构只是用于提供备份功能,主节点坏了,从节点不会顶上去,redis服务就挂了!
1. 主从节点配置
5000端口是主节点,6000和7000是两个从节点,下图所示,为了便于测试,可以自己创建几个启动脚本:
我们以5000端口为例
cli5000.bat:
redis-cli.exe -h 127.0.0.1 -p 5000
启动redis5000.bat:
redis-server .\redis5000.conf
redis5000.conf文件就是将原来的那个配置文件复制一份,修改一点东西
至于其6000和7000节点的配置和上面一样,复制一份修改就行
但是由于从节点需要指定主节点所在的ip和端口,所以在这两个从节点配置文件中还需要修改一个地方:
我这里因为是本机测试的,假如你是远程的redis主机,在三个配置文件中需要将bind 127.0.0.1这里的配置改为bind 0.0.0.0 表示所有的客户端都可以远程连接
这里的ip根据自己需要进行修改,假如你修改了,上面的slaveof这里的ip也就需要相应的修改
2. 测试主从效果
首先,点击 启动redis5000主.bat 和 启动redis6000从.bat 启动主从节点的服务端:
我们双击cli5000.bat 和 cli6000.bat启动客户端:
可以分别打开5000data和6000data目录,当满足持久化条件后就会有rdb和aof文件生成了;
可以看到主从配置已经成功了,你可以打开你配制的所有从节点,都会自动从5000主节点中同步数据的;
需要注意的是,从节点默认是不能写入数据的,只能读,因为从节点默认只做备份的作用
想要从节点也能写入数据,我们只需要在配置文件中修改一个地方,然后重启redis服务端,下图所示:
注意,从节点写入的数据,只会在当前从节点中的,不会同步到其他节点!