redis集群主从节点自动切换

前言

最近在将redis作为数据库使用(redis中存放大量数据)的项目中,偶然发现redis的主从节点发生了变化,但是没有任务报错,redis集群的各节点也没有fail状态,因此记录学习一下,redis的深层机制。

为什么

首先redis是单线程的,所有的命令发送的redis会进入一个队列,依次执行。当数据量很大时,执行flushall、keys、scan等耗时较长的命令时,就会照成redis节点阻塞。
其次,了解一下redis的集群节点检测机制。redis集群的其他节点,每隔一断时间,就会向集群中的其他节点发送ping包,以检测节点是否还活着。如果此时,某个主节点阻塞了,收到pong包的时间超时,大于 cluster-node-timeout,就会自动切换主从节点。此时,在redis-cli中查看cluster nodes,会发现节点会短暂的出现fail状态。当主从节点切换完毕,redis又会重新扫描一下集群中的所有redis节点,当阻塞的redis节点,执行完之后,又会重新回到正常状态。

解决

了解了上面说的redis机制之后,如果想要避免redis节点自动切换就很简单了,只需要调大redis.conf中的配置项cluster-node-timeout(默认15000 millisec)即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值