Redis集群(主從復制)
主從復制
主從復制原理
Redis集群中有很多Redis服務器,這些Reids服務器分為主服務器和從服務器。
- 從服務器會向主服務器發送命令:SYNC命令。
- 主服務器接收到SYNC命令后,開始執行GBSAVE命令生成RDB文件(快照文件)并使用緩沖區來記錄此后的寫命令
- 主服務器GBSAVE命令執行完畢后,會將次快照發送給所有的從服務器。而且在發送期間會繼續記錄寫命令。
- 從服務器接收到主服務器發送過來快照文件,會加載這個快照文件,并執行。
- 主服務在發送完快照文件后會向從服務器發送緩沖區命令。
- 從服務器完成對快照文件的載入,也會開始接收主服務器的命令,并執行。
- 從服務器和主服務器執行相同的命令
通過這種方式完成主從復制。
優點:
保證主服務器和從服務器數據同步,實現讀寫分離,主服務器用來執行寫命令,而從服務器用來提供數據(讀)。
缺點:
Redis不具備自動容錯和恢復功能,主從機器的宕機都會導致前段部分讀寫請求失敗,導致數據部分丟失。
- 哨兵模式
當主服務器宕機了,哨兵模式可以讓一個從服務器升級為主服務器,以便保證繼續提供服務。
優點:
提高Redis的高可用,讓系統更健壯,可用性更高。
缺點:
Redis很難支持在線擴容。如果集群容量達到上線,這時擴容就會變得很復雜。
Redis-Cluster集群
主從復制有一個很大的缺陷:主服務器和從服務器存儲的數據一樣,這是一種浪費。
redis3.0后提供Redis-Cluster集群,這是一種分布式存儲的集群方式:每一個Reids服務器上存儲不同的數據,提高高可用。
Redis在去保存數據時,會通過一個算法計算key的結果,通過這個結果和插槽(16834)(Hash槽:0-16383)做運算,將運算結果作為這個數據
的存儲位置,這樣就可以將數據保存到不同的服務器上,保證分布式存儲。

浙公網安備 33010602011771號