? 一、什么是 Redis 主從集群?
Redis 主從(Master-Slave)集群是一種最基礎的集群方式:
一臺 Redis 作為主節點(Master),負責寫操作;
一到多臺 Redis 作為從節點(Slave),負責讀操作并實時同步主節點的數據。
🔁 數據同步方式:主同步數據給從(單向復制)
? 二、主從架構圖(示意)
寫操作Client ------> Redis Master|自動復制|+------------+------------+| |Redis Slave 1 Redis Slave 2↑ ↑讀請求 讀請求
-
所有數據寫入都只進 Master
-
從節點只接受數據同步和讀請求,不能寫入
-
一般搭配讀寫分離使用,提高讀性能
? 三、主從復制工作機制
1?? 主從建立連接
使用命令:
slaveof <master_ip> <master_port>
一旦從節點執行這個命令,它會:
-
向主節點發送 PSYNC(部分同步)請求
-
如果是第一次連接,會觸發全量同步(RDB)
2?? 數據同步流程
-
初次連接:從節點向主節點請求全量同步(傳輸 RDB 快照 + 后續 AOF 命令)
-
增量同步:從節點定期獲取主節點寫操作的增量(命令流)并執行,保持一致性
3?? 主節點斷連后恢復
-
從節點會嘗試重連
-
若主節點恢復上線,可以自動恢復同步
? 四、配置主從集群(手動方式)
1?? 配置主節點(master)
redis-master.conf
port 6379
appendonly yes
2?? 配置從節點(slave)
redis-slave.conf
port 6380
slaveof 127.0.0.1 6379 # 指定主節點地址
3?? 啟動服務
redis-server redis-master.conf
redis-server redis-slave.conf
? 五、主從集群的優點
優點 | 說明 |
---|---|
提高讀取性能 | 可以讓從節點承擔讀取壓力,實現讀寫分離 |
容災能力 | 主節點宕機時,數據仍存在從節點中 |
數據安全性增強 | 多副本存儲,降低數據丟失風險 |
部署簡單 | 比 Cluster 簡單很多 |
? 六、主從集群的缺點
缺點 | 說明 |
---|---|
主節點是單點 | 如果主節點宕機,系統不能寫入,需要手動切換主從 |
無自動故障轉移 | 無法自動將從節點提升為主,需要人為干預或借助 Sentinel |
數據一致性延遲 | 從節點通過異步復制,主從間可能存在數據延遲 |
擴展能力有限 | 所有數據仍在主節點上,不能分片(即不能無限擴展容量) |
? 七、如何實現主從 + 高可用?
可以通過引入 Redis Sentinel(哨兵)機制 來解決主從架構的最大問題:主節點宕機時自動切換。
Redis Sentinel 負責監控主節點狀態,并在主節點故障時自動把某個從節點“升級”為新主節點。
結構就變成這樣:
+---------------------+| Sentinel |+---------+-----------+|+-------+--------+| |Redis Master <---- Sentinel 檢測狀態|+----+----+| |
Slave 1 Slave 2 <-- 新主選舉候選
? 八、主從適用場景
場景 | 說明 |
---|---|
讀多寫少系統 | 例如:商品瀏覽、文章詳情頁緩存等 |
有容災要求但數據量不大 | 中小型業務系統 |
作為 Redis Cluster 的組成部分 | Redis Cluster 的每個主節點也可以有從節點 |
? 總結一句話:
Redis 主從集群是最基本的高可用架構,主節點負責寫、從節點負責讀和備份,但缺乏自動切換機制,推薦搭配 Sentinel 使用。