1. 程式人生 > 其它 >redis三種模式對比

redis三種模式對比

  • 模式型別
    主從模式(redis2.8版本之前的模式)、sentinel(哨兵模式)(redis2.8及之後的模式)、redis ‎簇‎模式(redis3.0版本之後)

  • 主從模式
    同Mysql主從複製的原因一樣,Redis雖然讀取寫入的速度都特別快,但是也會產生讀壓力特別大的情況。為了分擔讀壓力,Redis支援主從複製,Redis的主從結構可以採用一主多從或者級聯結構,Redis主從複製可以根據是否是全量分為全量同步和增量同步。

    • 優點
      1、解決資料備份問題
      2、做到讀寫分離,提高伺服器效能
    • 缺點
      1、每個客戶端連線redis例項的時候都是指定了ip和埠號的,如果所連線的redis例項因為故障下線了,而主從模式也沒有提供一定的手段通知客戶端另外可連線的客戶端地址,因而需要手動更改客戶端配置重新連線
      2、主從模式下,如果主節點由於故障下線了,那麼從節點因為沒有主節點而同步中斷,因而需要人工進行故障轉移工作
      3、無法實現動態擴容
  • sentinel模式(哨兵模式)
    Sentinel(哨兵)是Redis的高可用性解決方案:由一個或多個Sentinel例項組成的Sentinel系統可以監視任意多個主伺服器,以及這些主伺服器屬下的所有從伺服器,並在被監視的主伺服器進入下線狀態時,自動將下線主伺服器屬下的某個從伺服器升級為新的主伺服器。

    • 優點
      1、Master 狀態監測
      2、如果Master 異常,則會進行Master-slave 轉換,將其中一個Slave作為Master,將之前的Master作為Slave
      3、Master-Slave切換後,master_redis.conf、slave_redis.conf和sentinel.conf的內容都會發生改變,即master_redis.conf中會多一行slaveof的配置,sentinel.conf的監控目標會隨之調換
    • 缺點
      1、如果是從節點下線了,sentinel是不會對其進行故障轉移的,連線從節點的客戶端也無法獲取到新的可用從節點
      2、無法實現動態擴容
  • cluster模式

    每一個藍色的圈都代表著一個redis的伺服器節點。它們任何兩個節點之間都是相互連通的。客戶端可以與任何一個節點相連線,然後就可以訪問叢集中的任何一個節點。對其進行存取和其他操作。
    一般叢集建議搭建三主三從架構,三主提供服務,三從提供備份功能。
    每一個節點都存有這個叢集所有主節點以及從節點的資訊。
    它們之間通過互相的ping-pong判斷是否節點可以連線上。如果有一半以上的節點去ping一個節點的時候沒有迴應,叢集就認為這個節點宕機了,然後去連線它的備用節點。如果某個節點和所有從節點全部掛掉,我們叢集就進入faill狀態。還有就是如果有一半以上的主節點宕機,那麼我們叢集同樣進入發力了狀態。

    • 優點
      1、有效的解決了redis在分散式方面的需求
      2、遇到單機記憶體,併發和流量瓶頸等問題時,可採用Cluster方案達到負載均衡的目的
      3、可實現動態擴容
      4、P2P模式,無中心化
      5、通過Gossip協議同步節點資訊
      6、自動故障轉移、Slot遷移中資料可用
    • 缺點
      1、架構比較新,最佳實踐較少
      2、為了效能提升,客戶端需要快取路由表資訊
      3、節點發現、reshard操作不夠自動化