这是我参与11月更文挑战的第17天,活动详情查看:2021最后一次更文挑战
Redis命令传播的心跳检测
命令传播阶段,从服务器默认会以每秒一次的频率向主服务器发送命令,命令为REPLCONF ACK 复制偏移量,它可以用来检测主从服务器的网络连接状态,辅助实现min-slaves选项,检测命令丢失
检测主从服务器的网络连接状态
主从服务器可以通过发送和接收REPLCONF ACK命令来检查网络连接是否正常,超过一秒没有收到从服务器发来的REPLCONF ACK命令,说明连接出了问题
实现min-slaves配置选项
Redis的min-slaves-to-write和min-slaves-max-lag用来防止主服务器在不安全的情况下执行写命令,也就是从服务器的数量少于min-slaves-to-write配置的个数或者从服务器的延迟值大于min-slaves-max-lag配置的秒数,主服务器将拒绝执行写命令。
检测命令丢失
主服务器传播给从服务器的写命令在半路丢失,那么当从服务器向主服务器发送REPLCONF ACK 命令时,主服务器发现从服务器当前的复制偏移量比自己的复制偏移量少,主服务器就会根据从服务器的复制偏移量,在复制积压缓冲区里面找到从服务器缺少的数据,将这些数据重新发送给从服务器
这就是Redis命令传播的心跳检测的三个作用,今天我们简单介绍了一下,心跳检测对redis复制还是至关重要的。总结一下就是心跳检测可以用来检测主从服务器的网络连接状态,辅助实现min-slaves选项和检测命令丢失。接下来的文章中我们会对redis的哨兵机制进行详细的分析,我们一起学习redis,一起掌握好它利用好它,更好的运用在工作和学习中,加油吧💪🏻