一、Redis的主從模式
通過執(zhí)行replicaof命令,讓一個服務(wù)器去復(fù)制另一個服務(wù)器的數(shù)據(jù)。被復(fù)制的服務(wù)器稱為Master主服務(wù),對主服務(wù)器進行復(fù)制的服務(wù)器稱為Slave從服務(wù)器。
為保證數(shù)據(jù)副本的一致,主從庫之間采用的是讀寫分離的方式。
讀操作:主庫、從庫都可以接收。
寫操作:首先到主庫執(zhí)行,然后,主庫將寫操作同步給從庫。
實現(xiàn)原理步驟:
- 從服務(wù)器向主服務(wù)器發(fā)送SYNC命令
- 主服務(wù)器收到SYNC命令后,執(zhí)行BGSAVE命令,在后臺生成RDB文件,使用緩沖區(qū)記錄從現(xiàn)在開始執(zhí)行的所有的寫命令。
- 當(dāng)主服務(wù)器的BGSAVE命令執(zhí)行完畢后,主服務(wù)器后將BGSAVE命令生成的RDB文件發(fā)送給從服務(wù)器,從服務(wù)器接收并載入這個RDB文件,將自己的數(shù)據(jù)庫狀態(tài)更新至主服務(wù)器執(zhí)行BGSAVE命令時的數(shù)據(jù)庫狀態(tài)。
- 主服務(wù)器將記錄在緩沖區(qū)里面的所有寫命令發(fā)送給從服務(wù)器,從服務(wù)器執(zhí)行這些寫命令,將自己的數(shù)據(jù)庫狀態(tài)更新至主服務(wù)器數(shù)據(jù)庫當(dāng)前所處的狀態(tài)。

圖片.png
二、哨兵機制
主從庫模式下,如果從庫發(fā)生故障了,客戶端可以繼續(xù)向主庫或其他從庫發(fā)送請求,進行相關(guān)的操作,但是如果主庫發(fā)生故障了,那就直接會影響到從庫的同步,因為從庫沒有相應(yīng)的主庫可以進行數(shù)據(jù)復(fù)制操作了。所以引入了哨兵機制,哨兵其實就是一個運行在特殊模式下的 Redis 進程,主從庫實例運行的同時,它也在運行。哨兵主要負(fù)責(zé)的就是三個任務(wù):監(jiān)控主庫運行狀態(tài),并判斷主庫是否客觀下線。在主庫客觀下線后,選取新主庫。選出新主庫后,通知從庫和客戶端。

圖片.png
三、Redis集群
集群方案采用哈希槽來處理數(shù)據(jù)和實例之間的映射關(guān)系。一個切片集群共有 16384 個哈希槽,這些哈希槽類似于數(shù)據(jù)分區(qū),每個鍵值對都會根據(jù)它的 key,被映射到一個哈希槽中。例如,如果集群中有 N 個實例,那么,每個實例上的槽個數(shù)為 16384/N 個。

圖片.png