背景介绍

单机的redis负载能力有限(QPS上万到十几万不等),所以对于读多写少的场景可以通过增加slave来提升负载能力。
redis主从将redis节点分为master和slave,所有的写请求都发送到master上,由master将客户端写入的数据发送给slave。
客户端可以从slave节点上进行数据读取,从而提升redis的负载能力

Redis-主从.png

11 master持久化对读写分离的意义
如果master宕机,重启后备库数据会被清空

12 主从复制原理、断点续传、无磁盘化复制、过期key处理
slave第一次启动先全量复制rdb,然后通过master把数据传输给slave
后续增量写master后会同步给slave

redis内存中有个backlog,master和slave都会记录一个offset,如果连接断了会从上次断开的地方继续复制下去

master在内存中创建rdb然后发送给slave,不落盘
repl-diskless-sync
repl-diskless-sync-delay 等待一定时长再开始复制

slave 每秒向master上报自己的offset,master会记录每个slave的offset后进行数据同步

min-slaves-to-write 1
min-slaves-max-lag 10
至少有1个slave,数据复制和同步的延迟不能超过10秒