Redis主从复制

redis 的持久化策略又两个一个是rdb文件的形式,一个是aof的形式,这两种rdb文件是一个内存快照,缺点是会出现数据丢失,因为快照是在特定结点进行生成的。但是这种方式的数据恢复是较快,他会fork出一个子线程来生成快照,但是如果rdb文件过大也会影响住线程。第二种aof这种方式是保存所有redis中的操作,这种文件大小会非常大,会从产生大量的无用数据,aof的数据保存方式又三种,一种是当有命令执行就把aof文件写入硬盘,这种性能影响大还有一种是不做任何指定由操作系统选择什么时候把数据写入硬盘这种对性能影响最小,另外一种就是折中方案就是一秒钟执行一次fsync,减少写入次数同时保证数据安全,同时针对aof有很多冗余数据,rewrite方法可以去除一定的冗余数据减少文件大小,提高效率。这两种方式做数据持久化都是通过异步来完成的但是这两种方式当数据写入磁盘的时候主线程都会被阻塞等待数据写入之后才会进行后面的操作,确保数据持久化完毕,从数据安全的角度使用aof这种策略好从性能的方式使用rdb方式好。

redis使用要求三大特性,高并发,高性能,高可用,其中高并发和高性能因为redis本身对于数据的操作除了持久化都是在内存进行操作的,所以性能都可以保证,问题在于高可用,采取的是主从复制机制,机多个主机对应多个从机,主机负责数据的删除 新增修改,从机负责数据查找,这样可以减小主机的压力,实现负载均衡。实现这种效果需要第一步主机和从机相链接,做全量数据同步,定时做分量数据同步来应对,全量同步使用redis生成的rdb文件进行,分量使用aof文件进行,使用复制缓冲区进行发送,注意缓冲区设置大小如果设置的放不下一个rbd文件或者aof文件这时候当从机进行数据更新时会发生数据缺失主机会再次生成rbd或aof文件进行传输会进入死循环。主机从机进行通讯时会发送id,也就是服务器的id,和offset偏移量哪些数据被发送哪些数据没被发送,从而进行数据传输。这其中从机一直时在向主机发送数据同步请求主机会根据offset的值来判断时候还有更新数据操作需要发送。(命令传播阶段)从机的发送策略,心跳机制:进入命令传播阶段候,master与slave间需要进行信息交换,使用心跳机制进行维护,实现双方连接保持在线。主机会发送ping请求默认十秒一次,确保从机在线,当延时大于8或者多数掉线这时候主机会关闭写功能(修改数据的功能)确保数据稳定。从机指令replconf ack {offset}周期1秒。

综上所属,redis主从复制分为三个阶段,1 建立连接 2 数据同步 3 命令传播

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值