Redis 主從節點的核心區別
特性 | 主節點 (Master) | 從節點 (Slave/Replica) |
---|---|---|
讀寫權限 | 可讀可寫 | 只讀(默認配置) |
數據流向 | 數據來源 | 從主節點同步數據 |
連接關系 | 可連接多個從節點 | 只能連接一個主節點 |
故障切換 | 故障時需要手動/自動提升從節點 | 可被提升為新的主節點 |
命令執行 | 執行所有命令 | 拒絕寫操作(SET/DEL等) |
為什么Redis會導致登錄失敗?(故障原因分析)
-
主從切換未完成
-
Redis 主節點故障后,從節點被提升為新主節點需要時間
-
在此期間客戶端仍向舊節點(已降級為從節點)寫入 token
-
-
配置錯誤導致意外切換
# 錯誤配置示例(redis.conf) replicaof 172.18.0.2 6379 # 使當前節點成為從節點
-
網絡分區問題
-
主節點與哨兵(Sentinel)失去聯系
-
哨兵集群誤判主節點下線,觸發故障轉移
-
-
未禁用從節點寫入
# 危險配置(允許從節點寫入) replica-read-only no
導致數據不一致,主節點恢復后覆蓋新數據
-
客戶端未處理重定向
-
智能客戶端未實現
MOVED
重定向處理 -
連接池未刷新拓撲信息
-
典型故障場景還原
解決方案和預防措施
立即恢復服務
# 1. 提升從節點為主節點
redis-cli -h problem_replica SLAVEOF NO ONE# 2. 更新客戶端連接配置
sed -i 's/old_master_ip/new_master_ip/' application.properties
高可用架構改造
關鍵配置檢查
# redis.conf
replica-read-only yes # 確保從節點只讀
min-replicas-to-write 1 # 至少1個從節點才可寫
為什么影響范圍大?
-
Token寫入是關鍵路徑
-
所有登錄請求都需要寫Redis
-
故障直接影響新用戶登錄和老用戶會話刷新
-
-
雪崩效應
-
登錄失敗導致重試流量激增
-
連接池耗盡引發級聯故障
-
-
無降級方案
-
多數系統未設計本地token緩存
-
缺乏寫操作降級策略
-
建議:設計雙寫策略或異步寫隊列,保證核心登錄流程可用性。