在Slave啓動並連接到Master之後,它將主動發送一個SYNC命令。此後Master將啓動後臺存盤進程,同時收集所有接收到的用於修改數據集的命令,在後臺進程執行完畢後,Master將傳送整個數據庫文件到Slave,以完成一次完全同步。而Slave服務器在接收到數據庫文件數據之後將其存盤並加載到內存中。此後,Master繼續將所有已經收集到的修改命令,和新的修改命令依次傳送給Slaves,Slave將在本次執行這些數據修改命令,從而達到最終的數據同步。
如果Master和Slave之間的鏈接出現斷連現象,Slave可以自動重連Master,但是在連接成功之後,一次完全同步將被自動執行。
配置說明:
主從實現案例(本案例是通過一主機多端口的方式實現的)
1.創建redis主從目錄
# mkdir /redis/{master_6379,slave_6380}/{conf,log,data} -p
# cp /root/redis-3.0.5/redis.conf master_6379/conf/master.conf
# cp /root/redis-3.0.5/redis.conf slave_6380/conf/slave.conf
2. 修改redis主從服務器的配置文件
# vim master_6379/conf/master.conf #修改主服務器的配置文件
pidfile /redis/master_6379/redis_master.pid
port
logfile "/redis/master_6379/log/master.log"
dir /redis/master_6379/data/
appendfilename "appendonly.aof"
# vim /redis/slave_6380/conf/slave.conf #修改從服務器的配置文件
pidfile /redis/slave_6380/redis_slave.pid
port 6380
logfile "/redis/slave_6380/log/slave.log"
dir /redis/slave_6380/data/
slaveof 127.0.0.1 6379
appendfilename "appendonly.aof"
3.啓動主、從服務器
# redis-server /redis/master_6379/conf/master.conf
# redis-server /redis/slave_6380/conf/slave.conf
4.向主服務器添加數據
# redis-cli -p 6379
127.0.0.1:6379> set key1 hello
OK
127.0.0.1:6379> set key2 world
OK
127.0.0.1:6379> set key3 !!!
OK
127.0.0.1:6379> keys *
1) "key2"
2) "key1"
3) "key3"
127.0.0.1:6379> quit
5.在從服務器上查看數據信息是否已同步
# redis-cli -p 6380
127.0.0.1:6380> get key1
"hello"
127.0.0.1:6380> get key2
"world"
127.0.0.1:6380> get key3
"!!!"
127.0.0.1:6380> keys *
1) "key1"
2) "key2"
3) "key3"
127.0.0.1:6380> quit
參考文獻鏈接:http://www.linuxidc.com/Linux/2016-03/129301.htm