Redis三种模式-主从模式读写分离搭建


前言

Redis有三种类型模式:
主从模式(redis2.8版本之前的模式)、哨兵sentinel模式(redis2.8及之后的模式)、redis cluster模式(redis3.0版本之后)


一、主从模式优缺点?

为什么要读写分离:
读写分离使用于大量读请求的情况,通过多个slave分摊了读的压力,从而增加了读的性能。
过多的select会阻塞住数据库,使你增删改不能执行,而且到并发量过大时,数据库会拒绝服务。
因而通过读写分离,从而增加性能,避免拒绝服务的发生。
我认为需要读写分离的应用场景是:写请求在可接受范围内,但读请求要远大于写请求的场景。

优点:
1、解决数据备份问题

2、做到读写分离,提高服务器性能

缺点:
1、每个客户端连接redis实例的时候都是指定了ip和端口号的,如果所连接的redis实例因为故障下线了,而主从模式也没有提供一定的手段通知客户端另外可连接的客户端地址,因而需要手动更改客户端配置重新连接

2、主从模式下,如果主节点由于故障下线了,那么从节点因为没有主节点而同步中断,因而需要人工进行故障转移工作

3、无法实现动态扩容

注意:master可以读写,slave默认则只能进行读取操作,因为当数据卸载从服务器上时会在主服务器进行同步的时候被删除。
在这里插入图片描述
了解了主从的优缺点后,其实就得出在业务系统不断扩张的情况下利是小于弊,所以推荐使用:哨兵sentinel模式(redis2.8及之后的模式)、redis cluster模式(redis3.0版本之后)这两种,但是这两种的基础还是主从所以尝试一下主从也对后续三种模式的理解有一定帮助。

二、搭建步骤

下载安装好redis,我们就在一台机器上通过6378(slave)、6379(master)、6380(slave)3个不同的端口来模拟一主两从的配置,在不同的服务器上道理是一样的。

将master的redis下的redis.windows-service.conf复制两份到slave文件夹下

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里展示的是6378的操作,6380一样的操作,配置好以后我们修改6379(master)中的配置文件,主要修改如下

1. 为了安全设置redis登录密码将#requirepass改为requirepass yourPassword

2.现在修改6378(slave)以及6380(slave)配置文件,这里只展示redis.windows-service6378.conf的配置修改,6380同理。

  • 修改port端口为6378
  • 修改logfile "server6378_log.txt"
  • 修改dir D:\Redis-x64-3.2.100-ms\redis.windows-service6378,这里是一个目录,只需要指定为一个目录即可,每个slave的dir不能改到同一个文件目录下,不然会出现多个slave进行同步master数据时写入报错
    [13168] 05 Feb 16:25:25.697 # Error moving temp append only file on the final destination: Input/output error [13168] 05 Feb 16:25:25.699 # rewriteAppendOnlyFile failed in qfork: Input/output error [14268] 05 Feb 16:25:25.757 # fork operation complete [14268] 05 Feb 16:25:25.758 # Background AOF rewrite terminated with error [14268] 05 Feb 16:25:25.864 * Background append only file rewriting started by pid 13776 [14268] 05 Feb 16:25:26.065 * AOF rewrite child asks to stop sending diffs.
  • 修改slaveof yourMasterIP yourMasterPort
  • 修改masterauth yourMasterPassword,这个是取决于你master是否设置登录密码来的,我们这里是设置了master的密码的哦。
  • 修改appendonly yes开启aof持久化机制,我们这里是rdb和aof持久化机制是一起开启的所以会出现上图中的.rdb,.aof文件。

到此配置就完成了。

三、启动看效果

  • 打开cmd命令行cd到D:\Redis-x64-3.2.100运行redis-server.exe D:\Redis-x64-3.2.100\redis.windows-service.conf这样我们就将master启动起来。

  • 打开cmd命令行cd到D:\Redis-x64-3.2.100运行redis-server.exe D:\Redis-x64-3.2.100-ms\redis.windows-service6378\redis.windows-service6378.conf这样我们就将slave6378启动起来。

  • 打开cmd命令行cd到D:\Redis-x64-3.2.100运行redis-server.exe D:\Redis-x64-3.2.100-ms\redis.windows-service6380\redis.windows-service6380.conf这样我们就将slave6380启动起来。
    我们在master客户端输入info命令可以看到已经是角色是master,有两个连接的slave,端口分别是6380,6379
    在这里插入图片描述

  • 打开cmd命令行cd到D:\Redis-x64-3.2.100运行redis-cli.exe -h yourMasterIP -p yourSlavePort这样我们就打开了slave客户端,记得设置的输入密码auth yourPassword

在每个slave客户端同样输入info 我们可以看到角色是slave,master的信息
在这里插入图片描述

  • 这时我们向master里写数据set test 123,我们就能在两个slave客户端里面用get test 就能看到数据已经同步过去了。
  • 当我们在slave中使用set test1 1234进行写数据时,会出现报错
    在这里插入图片描述

总结

到此就实现了主从读写功能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值