Redis Replication,非常簡單的配置和使用,是非常普遍的master-slave結構,Slave Redis執行個體準确的複制主執行個體的副本。 每次連接配接斷開時,slave将自動重新連接配接到master,并且無論主站發生什麼情況,slave都會嘗試成為master的精确副本。
主從複制結構主要使用三種機制:
當slave和master節點正常連接配接時,master節點發送多個指令的資料流給slave節點來更新salve的資料,來實作對master節點資料變更的複制。 |
當master和slave的連接配接中斷時,網絡問題、master逾時、slave逾時等都會導緻連接配接中斷,slave會嘗試重新連接配接并嘗試重新同步那部分因為斷開連接配接沒有同步的資料。 |
slave沒有同步的資料無法同步時,slave會要求重新同步所有資料,這是一個比較複雜的過程,master建立一個他所有資料的快照,并發送給slave。然後,在master資料更改時,繼續發送指令資料流給slave來保持資料同步。 |
Redis預設使用異步複制,低延遲,高性能,master不會等待slave執行複制,但是如果需要,Redis也支援了同步的複制。
通過簡單的配置,完成redis主從複制repl。
docker啟動兩個redis容器master,slave,docker部署redis參考《Docker部署Redis》
在slave的redis.conf中增加配置:
slaveof {master_IP} {master_port}
如果master有密碼的話,還需要再slave的redis.conf中設定密碼,例如我的密碼是redis,配置如下:
masterauth redis
重新啟動slave,測試同步。其中09e7b55bcacb為master,cd6ce632d93d為slave。
[[email protected] redis1]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cd6ce632d93d redis:5.0.5 "docker-entrypoint.s…" 2 seconds ago Up 2 seconds 0.0.0.0:6381->6379/tcp redis-slave
09e7b55bcacb redis:5.0.5 "docker-entrypoint.s…" 2 hours ago Up 2 hours 0.0.0.0:6380->6379/tcp redis-master
[[email protected] redis1]# docker exec -it 09e7b55bcacb redis-cli
127.0.0.1:6379> auth redis
OK
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set test test
OK
127.0.0.1:6379>
[[email protected] redis1]# docker exec -it cd6ce632d93d redis-cli
127.0.0.1:6379> auth redis
OK
127.0.0.1:6379> keys *
1) "test"
127.0.0.1:6379> get test
"test"
127.0.0.1:6379>
(完)(^_^)