在互聯網的大趨勢下,用戶體驗、服務的可用性日趨重要。任何一個服務的不可用,均可能致使連鎖式功能故障。mysql
高可用模型的已經逐漸造成一種套路:nginx
至少有兩臺服務節點master和backup/slave。同一時刻只有一臺服務節點對外提供服務——master,backup/slave之一做爲備/從機。當master宕機後,當即切換至backup/slave之一,backup/slave之一成爲master,對外提供服務。redis
從主備/主從有無交互的角度能夠劃分:算法
從故障轉移方式角度劃分:sql
至少有兩臺服務節點組成服務節點的羣體,客戶端常藉助各類路由算法: 服務器
使得羣體中的每一個服務節點都對外提供一致性協同服務。便是集羣的某一個或者某一些服務節點宕機,正常的節點仍能對外提供可用性服務,保證服務的高可用。集羣模式自然的具備高可用特徵。運維
讓Redis用戶慶幸的是Redis中對這兩種高可用模式都作了相應的實現。ip
Redis提供了Sentinel哨兵模式,便是主從模式的標準實現。Sentinel哨兵模式中,分爲哨兵和存儲兩種類型節點。哨兵節點負責維護、監控、切換存儲節點,存儲節點主要負責提供數據管理能力——即單機Redis能力。路由
同時Redis還提供了集羣模式,Redis的集羣模式是Redis 3.0引入的新特徵。整個集羣中每一個節點都做爲存儲節點,對外協同服務。同步
同時用戶還能夠簡單的利用SHELL和Keepalive實現Redis的主從模式,不過在Redis完善的Sentinel模式下,這種方式就相形見絀了。