redis数据主从同步,仅仅是为了做一个测试(在本地部署两个redis的服务)
redis的数据同步源于对mysql的数据库读写分离理解
一:mysql的数据同步的流程如下如所示,Master将数据修改记录存储在binary log中,Slave通过I/O将二进制文件拷贝到中继日志(relay log),Slave读取中继日志并对其数据库进行对应的操作。
(以上的步骤只是用于简单的理解,深一步了解请自行查询)
二:在单机模式模拟数据同步
1:在我的资源中下载redis的安装包(也可以使用其他),复制两份来模拟Master和Slave,分别取名为redisMasterSevice和redisSlaveService
2:修改Master和Slave的配置
Master中找到配置文件redis.windows.conf(windows中的名称,linux找到对应的配置文件),中找到绑定的IP地址,本文中是在本地进行测试所以绑定的地址为127.0.0.1,在服务器绑定为对应的IP地址,配置如下图所示
Slave中找到配置文件redis.windows.conf(windows中的名称,linux找到对应的配置文件),将默认的端口号更改为非6379和其他未占用端口(我修改为6380);
同理绑定的地址为127.0.0.1,如果是服务器更改绑定地址为对应的地址;
修改Master和Slave的对应关系,在Slave中的配置文件中搜索# slaveof <masterip> <masterport>,我们在下面按照格式添加Master的配置类似 slaveof MasterIP地址 Master端口,如下图
三:分别启动Master和Slave服务
启动Master服务。通过cmd跳转到redisMasterService文件夹下,输入redis-server.exe redis.conf启动Master服务
启动Slave服务,方法如启动Master服务
slave服务启动后出现如下,修改配置之后slave服务会在启动之后主动连接Master服务(SYNC),然后通过flush、load来将Master数据同步到slave
四:进行测试是否数据同步
同样打开两个窗口来操作reids(之前运行得服务端不可关闭),对应到Master的文件夹下,输入redis-cli.exe -p 6379 进入客户端,输入flushdb命令清空缓存数据,然后数据一个简单的命令set key1 value1 来存入Master中
新打开cmd窗口, 对应到Slave的文件夹下 ,输入redis-cli.exe -p 6380进入客户端,输入get key1看是否获取到数据value1
这样看来Slave获取到了Master中的数据,完成了同步