redis-主从复制


前言

为了提高Redis的可靠性提供了主从复制、集群的方案


主从复制

概念

主从之间提供异步复制的方式,将主库中的数据在存储之后再同步到从库

配置

只需要从库添加该配置,主库会自动识别从库。

#example replicaof 192.168.1.1 6379
replicaof <master ip> <master port> 

如果不添加配置 启动时使用命令:redis-server replicaof 192.168.1.1 6379亦可。

同步流程

  • 全量数据同步
    全数据量同步图
  • 增量数据同步
    增量数据同步
  • 服务器RUN ID
    每个redis都有自己的RUN ID,启动时由40个随机的十六进制字符生成;
    • 当从库对主库初次复制时,主库将自身的runid传送给从库,从库会将runid保存;
    • 当从库断线重连主库时,从库将向主库发送之前保存的RUN ID;
      • 从库RUN ID和主库RUN ID一致,说明从库断线前复制的就是当前主库;主库尝试执行增量同步;
      • 若不一致,说明从库断线前复制的主库并不时当前的主库,则主库将对从库执行全量同步操作;
  • 复制偏移量 offset
    主从都会维护一个复制偏移量,通过比较offset得知主从之间数据是否一致;偏移量相同则数据一致;偏移量不同则数据不一致;
    • 主库向从库发送N个字节的数据时,将自己的复制偏移量上加N;
    • 从库接收到主库发送的N个字节数据时,将自己的复制偏移量加上N;
  • 环形缓冲区
    固定长度的先进先出队列
    • 从库与主库断开连接,避免重新连接后开始全量同步,在主库设置了一个环形缓冲区;该缓冲区会在从库失联期间累计主库的写操作;当从库重连,会发送自身的复制偏移量到主库,主库会比较主从的复制偏移量:
      • 若从库offset还在复制积压缓冲区中,则进行增量同步;
      • 否则,主库将对从库执行全量同步;
    • 配置(主库)
#redis.conf
repl-backlog-szie 1mb
# 断开连接时间超过3600 则释放缓冲
repl-backlog-ttl 3600
  • 判断流程图
    判断offset和runid
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值