一:作用

可以把master的数据同步到slave中保存,增强数据安全性。

可以分散来自客户端的读请求,降低master的压力。

默认主宕机后无法主从切换,利用哨兵模式可以做到。

二:过程:

1、slave连接master时候,master会执行BGSAVE操作。所以master中须保证已配置dir和dbfilename选项,并且所指路径和文件对于redis是可写的。

2、主从复制的设置方式:

a、在slave的conf中:slaveof   master<ip>  master<port> ,slave启动时,就会去连接master。(5.0之后slaveof变为replicaof)

b、如果slave正在运行,用户可以发送指令:slaveof  master<ip>  master<port>  来连接master。   (slaveof  no  one命令终止复制)

3、复制的启动过程:

redis slave节点bind redis slaveof_主从复制

实际运用中,master最好只使用50%-65%的内存,留下一定的内存用于BGSAVE命令和创建用于记录写命令的缓冲区,否则会影响redis处理命令请求的效率(主从服务器间的网络宽带不足也会影响)。

4、当多个从连接一个主时,可能出现以下之一:

redis slave节点bind redis slaveof_主从复制_02

5、主从链:就是slave可以有slave

redis slave节点bind redis slaveof_redis_03

同时使用AOF和主从复制,可以将数据持久化到多台机器。当然,这得保证需要持久化的服务器上开启了AOF相关配置(appendonly  yes和appendfsync  everysec)。

6、权限验证

主从正常连接后,进行权限验证

主未设置密码( requirepass=“” ) ,从也不用设置密码( masterauth=“” )

主设置密码 (requirepass!=""), 从需要设置密码 (masterauth= 主的 requirepass 的值 )

或者从通过 auth 命令向主发送密码

上面认识了主从复制和主从链,什么情况下使用?

1、读请求的重要性明显高于写,并且请求的数量远远超出一台redis可以处理的范围,这时候需要添加服务器,就可以使用主从复制。

2、master无法快速更新所有slave,或者因重新连接和重新同步slave导致系统超载,可以使用主从链,不要把所有的slave绑定到一台master上。

注:slave其实是可以接受写命令的,修改slave配置文件中的slave-read-only no则可,,slave接受的写操作时不会同步到master的,一般也不会这么做…