网上不少Redis方面的文章,会涉及到repl-ping-slave-period和repl-ping-replica-period这两个重要参数,从一些中文解释来看,意思差很少,即:SLAVE周期性的ping MASTER间隔,可直接理解成SLAVE -> MASTER间的心跳间隔(注意箭头方向)。node
没有一篇文章同时提取这二者,老是分开出如今不一样文章中。在官方的配置文件redis.conf,5.0版本以前的均使用repl-ping-slave-period,而从5.0开始变成了repl-ping-replica-period,也就是说这两个实际上是同一个东西。实际上由于一些非技术缘由,不少软件将slave改为了replica,Redis也一样如此,因此replica和slave是彻底相同的。git
为了兼容,5.0同时支持两种用法(其它配置项也一样命运,如:slaveof改为了replicaof):github
} else if ((!strcasecmp(argv[0],"repl-ping-slave-period") ||redis !strcasecmp(argv[0],"repl-ping-replica-period")) &&网站 argc == 2)spa {server server.repl_ping_slave_period = atoi(argv[1]);ci if (server.repl_ping_slave_period <= 0) {文档 err = "repl-ping-replica-period must be 1 or greater";get goto loaderr; } } |
经常使用命令变化,但5.0仍然兼容的配置项(实际上全部的slave都改为了replica,包括一些官方网站的文档,不过代码中的变量名保持未变,仍就为slave):
<5.0版本 |
>=5.0版本 |
repl-ping-slave-period |
repl-ping-replica-period |
slaveof |
replicaof |
slave-priority |
replica-priority |
slave-read-only |
replica-read-only |
slave-serve-stale-data |
replica-serve-stale-data |
cluster-slave-validity-factor |
cluster-replica-validity-factor |
配置项说明(注意命名包含cluster的为集群专有配置项):
|
默认值 |
单位 |
|
repl-ping-replica-period |
10 |
秒 |
定义心跳(PING)间隔。 |
repl-timeout |
60 |
秒 |
这个参数必定不能小于repl-ping-replica-period,能够考虑为repl-ping-replica-period的3倍或更大。定义多长时间内均PING不通时,断定心跳超时。对于redis集群,达到这个值并不会发生主从切换,主从什么时候切换由参数cluster-node-timeout控制,只有master状态为fail后,它的slaves才能发起选举。 |
cluster-node-timeout |
15000 |
毫秒 |
集群中的节点最大不可用时长,在这个时长内,不会被断定为fail。对于master节点,当不可用时长超过此值时,它slave在延迟至少0.5秒后会发起选举进行failover成为master。Redis集群的不少其它值与cluster-node-timeout有关。 |
cluster-slave-validity-factor |
10 |
|
若是设置为0,则slave老是尝试成为master,不管slave和master间的连接断开时间的长短。若是是一个大于0的值,则最大可断开时长为:(cluster-slave-validity-factor * cluster-node-timeout)。例如:当cluster-node-timeout值为5,cluster-slave-validity-factor值为10时,slave和master间的链接断开50秒内,slave不会尝试成为master。 |
repl-timeout和cluster-node-timeout的区别:
|
默认值 |
单位 |
|
repl-timeout |
60 |
秒 |
决定复制超时,并不能决定slave发起选举,也不决定master什么时候为fail |
cluster-node-timeout |
15000 |
毫秒 |
决定master什么时候为fail,在fail后,slave会发起选举 |