slave-serve-stale-data yes|no
| 当slave和master之间的连接断开或slave正在于master同步时,如果有slave请求,当slave-serve-stale-data配置为yes时,slave可以相应客户端请求;当为no时,slave将要响应错误,默认是yes
|
slave-read-only yes|no
| 从服务器是否只读。设置为no时,可以接受客户端写命令,事实上从服务器写指令之后并不会同步到主服务器,而从服务器会周期性的同步主服务器的数据,很有可能这个写的数据会丢失。因为redis设置复制时,就没有考虑master-master这种架构。这个命令纯属鸡肋,并没有什么卵用。默认是yes
|
repl-diskless-sync yes|no
| 复制集同步策略:磁盘或者socket
当新slave连接或者老slave重新连接时候不能只接收不同,得做一个全同步。需要一个新的RDB文件dump出来,然后从master传到slave。可以有两种情况:
(1)、基于硬盘(disk-backed):master创建一个新进程dump RDB,然后由父进程(即主进程)增量传给slaves。
(2)、基于socket(diskless):master创建一个新进程直接dump RDB到slave的socket,不经过主进程,不经过硬盘。
使用建议:
(1)、基于硬盘的话,RDB文件创建后,一旦创建完毕,可以同时服务更多的
slave。基于socket的话, 新slave来了后,得排队(如果超出了repl-diskless-sync-delay还没来),结束一个再进行下一个。如果一个主多个从,强烈建议使用基于硬盘的方案。
(2)、当用diskless的时候,master等待一个repl-diskless-sync-delay的秒数,如果没slave来的话,就直接传,后来的得排队等了。否则就可以一起传。
(3)、disk较慢,并且网络较快的时候,可以用diskless。(默认用disk-based)
ps:配置高性能的硬盘,使用默认基于硬盘即可,这样节省网络。
默认为no
|
repl-diskless-sync-delay 5
| 设置成0的话,传输开始立马进行下一个。 默认为5。
|
repl-ping-slave-period 10
| Slave发送ping给master。默认10s
|
repl-timeout 60
| 超时时间,包括从master看slave,从slave看master,要大于上边的repl-ping-slave-period
|
repl-disable-tcp-nodelay no
| SYNC完毕后,在slave的socket里关闭TCP_NODELAY。
如果是yes,reids发送少量的TCP包给slave,但可能导致最高40ms的数据延迟。
如果是no,那可能在复制的时候,会消耗 少量带宽。
默认我们是为了低延迟优化而设置成no,如果主从之间有很多网络跳跃。那设置成yes吧。
|
repl-backlog-size 1mb
| 复制集后台backlog大小,越大,slave可以丢失的时间就越长。
|
repl-backlog-ttl 3600
| 多久释放backlog,当确认master不再需要slave的时候,多久释放。0是永远不释放。
|
slave-priority 100
| 当master不可用,Sentinel会根据slave的优先级选举一个master。最低的优先级的slave,当选master。而配置成0,永远不会被选举。(必须≥0)。默认是100。可以在配置集群时使用。
|
min-slaves-to-write 3
min-slaves-max-lag 10
| slave小于几个,网络lag大于几秒的时候,master停止接受write请求。默认对slave数目无限制,给0。网络延迟给10s
|