什麼是 Redis 集羣?
Redis 集羣(Redis Cluster)是 Redis 官方提供的分佈式解決方案,基於 “去中心化架構” 實現數據分片存儲與高可用保障,核心特徵如下:
- 架構本質:無中心節點的 Peer-to-Peer 模式,所有節點地位平等,通過 “集羣總線”(實例端口 + 10000)通信,交換節點狀態、哈希槽分配等元數據。
- 數據分片機制:採用 “哈希槽(Hash Slot)” 劃分數據 —— 將 16384 個固定哈希槽分配給主節點,數據寫入時通過 CRC16(key) % 16384 計算所屬哈希槽,自動路由到對應主節點存儲。
- 高可用設計:最小配置為 “3 主 3 從”,主節點負責讀寫,從節點同步主節點數據;主節點故障時,從節點通過投票機制自動切換為主節點,秒級恢復服務。
- 擴展性:支持動態新增 / 刪除節點,哈希槽可重新分配,實現性能和存儲容量的橫向擴展。
為什麼需要使用 Redis 集羣?
單節點 Redis 存在性能、存儲、高可用三大瓶頸,集羣的核心價值就是解決這些問題,具體場景如下:
- 突破單節點性能瓶頸
單節點 Redis 受 CPU 單核性能(Redis 單線程模型)和網絡帶寬限制,QPS 上限約 10 萬;集羣通過多主節點分擔讀寫請求,可支撐百萬級 QPS(如 3 主集羣理論 QPS 可達 30 萬 +)。
示例:電商秒殺場景,單節點無法承載瞬時高併發請求,集羣通過多節點分流,避免服務雪崩。
- 解決單節點存儲上限問題
單節點 Redis 的內存容量受服務器硬件限制(一般不建議超過 16GB,否則 GC 會導致性能下降);集羣將數據分散到多個節點,每個節點僅存儲部分數據,可通過增加節點橫向擴展存儲容量(如 10 個主節點可支持 160GB 數據)。
示例:社交平台存儲億級用户會話數據,單節點內存無法容納,集羣通過分片存儲實現數據分佈式管理。
- 保障服務高可用(避免單點故障)
單節點 Redis 宕機後,服務直接中斷;集羣中主節點故障時,其從節點會自動切換為主節點,接管哈希槽,業務無感知恢復(故障轉移耗時 1-3 秒)。
關鍵設計:主從節點需部署在不同服務器,避免 “服務器宕機導致主從同時失效”。
- 提升系統穩定性與容錯性
單節點 Redis 若出現硬件故障、網絡中斷,會導致數據丟失或服務不可用;集羣通過多節點冗餘存儲(主從複製)和故障自動轉移,降低故障影響範圍。
示例:某服務器斷電,僅影響該服務器上的主節點,其從節點(部署在其他服務器)立即切換,業務不受影響。
- 適配分佈式系統架構
現代業務多采用微服務分佈式架構,單節點 Redis 無法滿足跨服務、跨服務器的訪問需求;集羣支持多節點跨服務器部署,與分佈式系統天然適配,可作為分佈式緩存、分佈式鎖等核心組件。
哪些場景不需要 Redis 集羣?
- 數據量小(<10GB)、QPS 低(<5 萬):單節點 Redis + 持久化(AOF+RDB)即可滿足需求,集羣會增加運維複雜度。
- 僅需高可用,無需分片:可選擇 “主從複製 + 哨兵模式”,架構更簡單,運維成本更低。
- 對一致性要求極高(如金融交易):Redis 集羣默認異步複製可能存在數據延遲,需額外設計一致性方案(如 WAIT 命令),若無需分片,可優先選擇單節點 + 主從同步。