redis數據主從同步,僅僅是爲了做一個測試(在本地部署兩個redis的服務)
redis的數據同步源於對mysql的數據庫讀寫分離理解
一:mysql的數據同步的流程如下如所示,Master將數據修改記錄存儲在binary log中,Slave通過I/O將二進制文件拷貝到中繼日誌(relay log),Slave讀取中繼日誌並對其數據庫進行對應的操作。
(以上的步驟只是用於簡單的理解,深一步瞭解請自行查詢)
二:在單機模式模擬數據同步
1:在我的資源中下載redis的安裝包(也可以使用其他),複製兩份來模擬Master和Slave,分別取名爲redisMasterSevice和redisSlaveService
2:修改Master和Slave的配置
Master中找到配置文件redis.windows.conf(windows中的名稱,linux找到對應的配置文件),中找到綁定的IP地址,本文中是在本地進行測試所以綁定的地址爲127.0.0.1,在服務器綁定爲對應的IP地址,配置如下圖所示
Slave中找到配置文件redis.windows.conf(windows中的名稱,linux找到對應的配置文件),將默認的端口號更改爲非6379和其他未佔用端口(我修改爲6380);
同理綁定的地址爲127.0.0.1,如果是服務器更改綁定地址爲對應的地址;
修改Master和Slave的對應關係,在Slave中的配置文件中搜索# slaveof <masterip> <masterport>,我們在下面按照格式添加Master的配置類似 slaveof MasterIP地址 Master端口,如下圖
三:分別啓動Master和Slave服務
啓動Master服務。通過cmd跳轉到redisMasterService文件夾下,輸入redis-server.exe redis.conf啓動Master服務
啓動Slave服務,方法如啓動Master服務
slave服務啓動後出現如下,修改配置之後slave服務會在啓動之後主動連接Master服務(SYNC),然後通過flush、load來將Master數據同步到slave
四:進行測試是否數據同步
同樣打開兩個窗口來操作reids(之前運行得服務端不可關閉),對應到Master的文件夾下,輸入redis-cli.exe -p 6379 進入客戶端,輸入flushdb命令清空緩存數據,然後數據一個簡單的命令set key1 value1 來存入Master中
新打開cmd窗口, 對應到Slave的文件夾下 ,輸入redis-cli.exe -p 6380進入客戶端,輸入get key1看是否獲取到數據value1
這樣看來Slave獲取到了Master中的數據,完成了同步