定義
- Redis 是一個開源的、基于記憶體的資料結構存盤器,可以用作資料庫、快取和訊息中間件,

C/S架構
在用redis的程序中,可以通過redis的命令列,或者是各種語言的Redis的API在代碼里對Hash表進行操作,這些都是Redis客戶端,而Hash表所在的是Redis的服務端,Redis是C/S架構,
Redis的Server是單執行緒服務器,基于Event-Loop模式來處理Client請求,使用單執行緒的好處有這些:
- 不必考慮執行緒安全問題:好多操作都不必加鎖,簡化開發挺高性能,
- 減少執行緒切換損耗的時間,
集群
當我們專案中Redis的客戶端越來越多的時候,如圖,

這樣就會出現問題:
- Redis記憶體不足:Redis的客戶端越來越多,Redis的快取資料越來越大,
- Redis的吞吐量低:客戶端變多了,但是Redis只有一臺,
集群的思想就是多加幾臺Redis,客戶端的請求通過負載均衡演算法分散到各個Redis服務器上,通過集群的方式,實作增大快取容量,提升吞吐量,

主從復制
簡單的集群模式會出現下面的問題:
- 資料不完整:如果其中一臺Redis掛了,那么全部的快取資料會丟失,導致訪問資料庫的壓力增大,
- 資料查詢緩慢:某個時間段內某臺Redis的訪問量非常高,請求相同的資料,導致這個Redis機器非常忙碌,壓力巨大,
要想解決可用性問題,可以使用Master-Slaver模式,于是給每一臺Redis 加上一臺Slaver:

通過Master-Slave模式,又實作了兩個特性:
- 資料高可用:Master負責接收客戶端的寫入請求,將資料寫到Master后,同步給Slave,實作資料備份,一旦Master掛了,可以將Slave提拔為Master;
- 提高查詢效率:Master發現自己忙不過來的時候,可以把一些查詢請求,轉發給Slave去處理,也就是Master負責寫,Slave負責讀;
Redis資料結構

,,,未完待續!
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/238525.html
標籤:其他
