Redis的IO模型以及客戶端與服務端設計

2021-10-07 02:36:18 字數 1835 閱讀 5504

時間事件(伺服器的自身觸發的一些維護操作)

事件的排程與執行

客戶端--如何設計

伺服器redis伺服器是乙個事件驅動程式,伺服器需要處理一下兩類

redis基於reactor模式開發了自己的網路事件處理器:這個處理器被稱為檔案事件處理器

雖然檔案事件處理器以單執行緒方式執行,但通過使用i/o多路復用程式來監聽多個套接字,檔案事件處理器即實現了高效能的網路通訊模型,又可以很好的與redis伺服器中其他同樣以單執行緒方式執行的模組進行對接,這保持了redis內部單執行緒設計的簡單性

redis為檔案事件編寫了多個處理器,這些事件處理器分別用於實現不同的網路通訊需求,比如說:

伺服器將所有時間都放到乙個無序鍊錶中,每當時間事件執行器執行時,它就遍歷整個鍊錶,查詢所有已到達的事件,並呼叫相應的事件處理器。

持續執行的redis伺服器需要定期對自身的資源和狀態濟寧檢查和調整,從而確保伺服器可以長期,穩定的執行,這些操作由servercron函式執行,它的工作主要包括redis伺服器以週期性事件的方式來執行servercron函式,在伺服器執行期間,每個一段時間,servercron就會執行一次,直到伺服器關閉為止

因為伺服器同時存在檔案事件和時間事件兩種事件型別,所以伺服器必須對這兩種事件進行排程,何時對它們進行排程

在服務端儲存了乙個維持客戶端的資訊,以鍊錶的方式進行儲存

如果客戶端是通過網路連線與伺服器進行連線的普通客戶端,那麼在客戶端使用connect函式連線到伺服器時,伺服器就會呼叫連線事件處理器,為客戶端建立相應的客戶端狀態,並將這個新的客戶端狀態新增到伺服器狀態結構clients鍊錶的末尾。

伺服器在載入aof檔案時,會建立用於執行aof檔案包含的`redis命令的偽客戶端,並在載入完成之後,關閉這個偽客戶端。

redis伺服器負責與多個客戶端建立網路連線,處理客戶端傳送的命令請求,在資料庫中儲存客戶端執行命令所產生的資料,並通過資源管理來維持伺服器自身的運轉

Redis的Python客戶端redis py

1.安裝 1.redis py a.使用easy install sudo easy install redis b.原始碼安裝git clone cd redis py python setup.py install 2.parser安裝 parser可以控制如何解析redis響應的內容。redi...

Redis的Python客戶端redis py

1.redis py a.使用easy install 1 sudo easy install redis b.原始碼安裝 1 2 3 git clone cd redis py python setup.py install 2.parser安裝 parser可以控制如何解析redis響應的內容。...

redis的python客戶端redis py

去redis的官網看了一下的客戶端有很多,根據推薦和開發人員,選擇redis py。安裝方法可以使用easy install,或者從原始碼安裝。easy install redis 注意是redis,而不是redis py或者 git clone cd redis py python setup.p...