1、Redis支持主從(master-slave)復制功能,當主服務器更新數(shù)據(jù)時能同步到從服務器
(1)在從Redis服務器的redis.conf中添加slaveof masterip masterport即可主Redis服務器不需要做任何配置
(2)在啟動Redis服務器時指定主服務器 redis-server -- slave materip masterport
(3)在客戶端指定主服務器redis>slaveof masterip masterport SLAVEOF命令會會停止與原主服務器的同步,轉(zhuǎn)向新的主服務器同步
原理
(1)Redis主服務器等待命令SYNC的進入,Redis從服務(連接或重新連接)發(fā)送SYNC命令
(2)Redis主服務接受SYNC命令后開始執(zhí)行BGSAVE命令,并使用緩沖區(qū)記錄BGSAVE之后執(zhí)行所有的寫命令,從服務跟配置選項來決定是否使用現(xiàn)有的數(shù)據(jù)來處理客戶端的命令請求,還是向發(fā)送請求的客戶端返回錯誤
(3)主服務器執(zhí)行BGSAVE完畢之后 向從服務發(fā)送快照文件,并在發(fā)送期間繼續(xù)使用緩沖區(qū)記錄被執(zhí)行的寫命令,此時從服務丟棄所有舊數(shù)據(jù),開始載入主服務器發(fā)來的快照文件
(4)主服務器快照文件發(fā)送完畢,開始向從服務器發(fā)送存儲在緩沖區(qū)里的寫命令,從服務器完成對快照文件的解釋操作,像往常一樣開始接收命令請求
(5)主服務器緩沖區(qū)存儲的寫命令發(fā)送完畢;從現(xiàn)在開始沒執(zhí)行一條命令,就向從服務器發(fā)送同樣的命令,從服務器執(zhí)行完主服務器發(fā)來
的存儲在緩沖區(qū)的寫命令,并從現(xiàn)在開始,執(zhí)行主服務器發(fā)來的每一個寫命令。
注:從服務在進行同步時,會清空自己的所有數(shù)據(jù),從服務器在和主服務器進行初始連接時。數(shù)據(jù)庫原有的所有數(shù)據(jù)將都丟失,并替換成主服務器發(fā)來的數(shù)據(jù)
redis驗證快照文件和AOF文件兩個命令程序:
redis-check-aof --fix <file.aof> 命令會掃描給定 的aof文件 尋找不正確的命令 找到第一個出錯的命令后 會刪除之后的所有命令,只保留出錯命令之前的命令,大多數(shù)情況都是刪除AOF文件末尾不完整的命令。