# Redis 常用知識總結(一)
定義
- 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資料結構
。。。未完待續!
相關文章
- Redis知識總結Redis
- [Redis知識體系] 一文全面總結Redis知識體系Redis
- docker常用知識點總結Docker
- mysql 常用知識點總結MySql
- RabbitMQ 常用知識點總結MQ
- jQuery常用的一些知識點總結jQuery
- Redis知識點筆記總結Redis筆記
- Redis 基礎知識點總結Redis
- Redis知識體系總結(2021版)Redis
- Redis知識點&面試題總結Redis面試題
- MySQL 常用易混淆知識點總結MySql
- 作業系統常用知識總結!作業系統
- ES6常用知識點總結(上)
- ES6常用知識點總結(下)
- c語言常用小知識點總結1C語言
- 總結的小知識點(一)
- MySQL基礎知識和常用命令總結MySql
- servlet知識總結Servlet
- Cookie知識總結(-)Cookie
- MySQL知識總結MySql
- 知識點總結
- 知識方法總結
- Docker知識總結Docker
- JQuery知識總結jQuery
- 圖知識總結
- golang知識總結Golang
- 常量知識總結
- servelt知識總結
- HTML5知識點總結(一)HTML
- Vue一些知識點總結Vue
- ES6 常用知識彙總
- Java 知識點總結Java
- Vue知識總結(2)Vue
- django知識點總結Django
- iOS 知識點總結iOS
- MongoDB知識點總結MongoDB
- HDFS知識點總結
- HBase知識點總結