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

優點:
1. 解決數據備份問題
2. 做到讀寫分離,提高服務器性能
缺點:
1. master節點掛了以后,redis就不能對外提供寫服務了,因為剩下的slave不能成為master, 需要人工進行重啟master節點.
二、哨兵(sentinel)模式
sentinel的中文含義是哨兵、守衛。也就是說既然主從模式中,當master節點掛了以后,slave節點不能主動選舉一個master節點出來,那么我就安排一個或多個sentinel來做這件事,當sentinel發現master節點掛了以后,sentinel就會從slave中重新選舉一個master。
當使用sentinel模式的時候,客戶端就不要直接連接Redis,而是連接sentinel的ip和port,由sentinel來提供具體的可提供服務的Redis實現,這樣當master節點掛掉以后,sentinel就會感知並將新的master節點提供給使用者。

優點:
1. 當主節點掛掉, 哨兵會感知到自動推舉slave生成新的主節點.
缺點:
1.數據量過大到一台服務器存放不下的情況時,主從模式或sentinel模式就不能滿足需求了,這個時候需要對存儲的數據進行分片,將數據存儲到多個Redis實例中, 需要選擇集群模式.
三、集群模式
redis集群是一個由多個主從節點群組成的分布式服務器群,它具有復制、高可用和分片特性。redis集群不需要sentinel哨兵也能完成節點移除
和故障轉移的功能。需要將每個節點設置成集群模式,這種集群模式沒有中心節點,可水平擴展,據官方文檔稱可以線性擴展到1000節點。
redis集群的性能和高可用性均優於之前版本的哨兵模式。

這種模式適合數據量巨大的緩存要求,當數據量不是很大使用sentinel即可。
