在 redis 主从复制模式下可能会出现 slave 延迟导致读写不一致的问题。 解决办法有2种

1. 修改从几点参数配置

从节点的 slave-serve-stale-data 参数也与此有关,它控制这种情况下从节点的表现 当从库同主机失去连接或者复制正在进行,从机库有两种运行方式:

  1. 如果slave-serve-stale-data设置为yes(默认设置),从库会继续响应客户端的请求。

  2. 如果slave-serve-stale-data设置为no,除去INFO和SLAVOF命令之外的任何请求都会返回一个错误”SYNC with master in progress”。

2. 编写外部监控程序

将主从模式更换为哨兵模式则无需自己去做监控

对于无法容忍大量延迟场景,可以编写外部监控程序监听主从节点的复制偏移量,当延迟较大时触发报警或者通知客户端避免读取延迟过高的从节点。

编写监控程序,然后定时执行

完整的代码:包含 linux 定时器与 swoole 毫秒级定时器版本
https://github.com/leeprince/docker/tree/master/redis/monitor

在从节点种模拟网络延迟步骤

运行结果: