# Redis 常用知識總結(一)

MarlonBrando1998發表於2020-12-21

定義

  • 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資料結構

在這裡插入圖片描述

。。。未完待續!

相關文章