主从复制:将主机redis中的数据复制到其他从机redis中,数据复制是单向的,只能由主节点到从节点。主机以写数据为主,从机以读数据为主,这样可以减缓服务器的压力。
实现主从复制需要搭建redis集群,redis集群至少需要三台redis服务器。
搭建环境时,只需要配置从机,不需要配置主机,(从机认主即可):
主从配置
查看当前redis库信息
info replication
在从机中进行认主设置
slaveof <masterIP> <masterPort> #主机的IP地址和主机的端口号
#但是这个命令只是暂时的,当退出从机redis时,就会重置主从设置!
想要永久生效需要在从机的redis.conf文件中进行配置:
replicaof masterIP masterPort #配置主机的IP地址和端口号
masterauth masterPassword #如果主机有密码,则配置主机的密码
配置好后主机的所有数据都会自动的同步到从机中(从机没有写权限)。
关于服务器断连
-
当主机断开连接后,从机会依然保持从机配置。待主机恢复连接,从机会自动连接上主机。
-
当从机断开连接后,若是使用命令行配置的主从关系,当从机恢复连接,主从配置会失效,这个从机会变回主机。当这个从机重新配置为从机后,可获取主机内存中所有数据。
主从节点连接方式
1、所有的从节点都设置同一个节点为主节点:
redis1(192.168.1.100:6379)
redis2(192.168.1.101:6380):
slaveof 192.168.1.100 6379 #设置redis1为主机
redis3(192.168.1.102::6381):
slaveof 192.168.1.100 6379 #设置redis1为主机
2、每个从节点都设置前一个节点为主节点:
redis1(192.168.1.100:6379)
redis2(192.168.1.101:6380):
slaveof 192.168.1.100 6379 #设置redis1为主机
redis3(192.168.1.102::6381):
slaveof 192.168.1.101 6380 #设置redis2为主机
第二种主从配置也可以正常进行主从复制,redis3可以获取到redis1的所有数据。redis2依然只是一个从机,没有写权限!
从节点辞职
如果从节点想变回主节点,可以用命令:
slaveof no one #变回主节点