Redis与分布式-主从复制

接上文 常用中间件-OAuth2

1.主从复制

Redis与分布式-主从复制_第1张图片
启动两个redis服务器。
修改第一个服务器地址
Redis与分布式-主从复制_第2张图片
Redis与分布式-主从复制_第3张图片

修改第二个redis
Redis与分布式-主从复制_第4张图片
然后分别启动

redis-server.exe redis.windows.conf

Redis与分布式-主从复制_第5张图片

Redis与分布式-主从复制_第6张图片
)
查看当前服务器的主从状态,打开客户端:输入info replication命令来查看当前的主从状态,可以看到默认的角色:master,从节点数量为0。
也就是说所有的服务器启动之后都是主节点状态,此时若想要让6002作为从节点通过一个命令即可。Redis与分布式-主从复制_第7张图片

replicaof 127.0.0.1 6001

可以看到输入命令后,查看6002redis服务器的状态,会将6001服务器作为主节点,而当前节点作为6001的从节点,并且角色也会变为slave
Redis与分布式-主从复制_第8张图片
查看6001服务器状态,发现已经有了一个从节点
Redis与分布式-主从复制_第9张图片
现在6001作为一个主机,6002作为一个从机出现。其中还有一个参数offset=224,即偏移量,这个偏移量反应的是从节点的同步情况。
在这里插入图片描述
测试:从主节点新增数据,查看是否会同步到从节点:
主服务器新增数据
在这里插入图片描述
Redis与分布式-主从复制_第10张图片
用从节点写入一个数据,发现写入不了,即从节点只能读不能写。
Redis与分布式-主从复制_第11张图片
若不想让6002作为6001的从节点,则需要输入slaveof no one或者replicaof no one即可
Redis与分布式-主从复制_第12张图片
Redis与分布式-主从复制_第13张图片
再启动一台6003的redis服务器。
Redis与分布式-主从复制_第14张图片
修改redis.windows.conf文件中的port,改为6003,然后启动
Redis与分布式-主从复制_第15张图片
进入6003服务,查看状态
Redis与分布式-主从复制_第16张图片
将6003作为6001的从节点
Redis与分布式-主从复制_第17张图片
Redis与分布式-主从复制_第18张图片
当主节点关闭后,从节点依然可以读取数据:

Redis与分布式-主从复制_第19张图片
Redis与分布式-主从复制_第20张图片
Redis与分布式-主从复制_第21张图片
这样一定程度能防止数据丢失。
但是这样每次用命令配置太麻烦,因此可以再配置文件中配置,添加replicaof 127.0.0.1 6001,这样从服务器启动会自动连接到主服务器
先将6001,6002都关闭
Redis与分布式-主从复制_第22张图片
Redis与分布式-主从复制_第23张图片
然后开启6001,6002,6003,进入6001查看状态,有两个从节点
Redis与分布式-主从复制_第24张图片
此时offset=140,添加一个数据后,offset变为225
Redis与分布式-主从复制_第25张图片
除了作为Master的从节点外,还可以将其作为从节点的从节点,比如让6003作为6002的从节点:
先进入6003服务器,通过replicaof 127.0.0.1 6002设置为6002的从节点
Redis与分布式-主从复制_第26张图片
Redis与分布式-主从复制_第27张图片
优点是减少了主节点的压力,缺点是整个链路出现问题,那么会导致后边的从节点无法及时同步。

你可能感兴趣的:(SpringCloud,Alibaba,redis,分布式,数据库)