單機版
特點:簡單
問題:
1、記憶體容量有限 2、處理能力有限 3、無法高可用。
主從複制
Redis 的複制(replication)功能允許使用者根據一個 Redis 伺服器來建立任意多個該伺服器的複制品,其中被複制的伺服器為主伺服器(master),而通過複制建立出來的伺服器複制品則為從伺服器(slave)。 隻要主從伺服器之間的網絡連接配接正常,主從伺服器兩者會具有相同的資料,主伺服器就會一直将發生在自己身上的資料更新同步 給從伺服器,進而一直保證主從伺服器的資料相同。
特點:
1、master/slave 角色
2、master/slave 資料相同
3、降低 master 讀壓力在轉交從庫
問題:
無法保證高可用
沒有解決 master 寫的壓力
哨兵
Redis sentinel 是一個分布式系統中監控 redis 主從伺服器,并在主伺服器下線時自動進行故障轉移。其中三個特性:
監控(Monitoring): Sentinel 會不斷地檢查你的主伺服器和從伺服器是否運作正常。
提醒(Notification): 當被監控的某個 Redis 伺服器出現問題時, Sentinel 可以通過 API 向管理者或者其他應用程式發送通知。
自動故障遷移(Automatic failover): 當一個主伺服器不能正常工作時, Sentinel 會開始一次自動故障遷移操作。
特點:
1、保證高可用
2、監控各個節點
3、自動故障遷移
缺點:主從模式,切換需要時間丢資料
沒有解決 master 寫的壓力
叢集(proxy 型):
Twemproxy 是一個 Twitter 開源的一個 redis 和 memcache 快速/輕量級代理伺服器; Twemproxy 是一個快速的單線程代理程式,支援 Memcached ASCII 協定和 redis 協定。
特點:1、多種 hash 算法:MD5、CRC16、CRC32、CRC32a、hsieh、murmur、Jenkins
2、支援失敗節點自動删除
3、後端 Sharding 分片邏輯對業務透明,業務方的讀寫方式和操作單個 Redis 一緻
缺點:增加了新的 proxy,需要維護其高可用。
failover 邏輯需要自己實作,其本身不能支援故障的自動轉移可擴充性差,進行擴縮容都需要手動幹預
叢集(直連型):
從redis 3.0之後版本支援redis-cluster叢集,Redis-Cluster采用無中心結構,每個節點儲存資料和整個叢集狀态,每個節點都和其他所有節點連接配接。
特點:
1、無中心架構(不存在哪個節點影響性能瓶頸),少了 proxy 層。
2、資料按照 slot 存儲分布在多個節點,節點間資料共享,可動态調整資料分布。
3、可擴充性,可線性擴充到 1000 個節點,節點可動态添加或删除。
4、高可用性,部分節點不可用時,叢集仍可用。通過增加 Slave 做備份資料副本
5、實作故障自動 failover,節點之間通過 gossip 協定交換狀态資訊,用投票機制完成 Slave到 Master 的角色提升。
缺點:
1、資源隔離性較差,容易出現互相影響的情況。
2、資料通過異步複制,不保證資料的強一緻性