[redis] 事件

文件事件

  1. 說明
    Redis 服務器通過套接字 Socket 與客戶端或其它 Redis 服務器進行連接,文件時間就是服務器對套接字操作的抽象。
    套接字變爲可應答(acceptable)、可寫(writable)、可讀(readable) 時,會產生相應的文件事件,服務器通過監聽並處理這些事件來完成一系列網絡通信操作。
    文件事件分爲 AE_READABLE 事件(讀事件)和 AE_WRITABLE事件(寫事件)兩類。

  2. 文件事件處理器
    Redis 基於 Reactor 模式開發了自己的網絡事件處理器,處理器使用 I/O 多路複用程序來監聽多個套接字,並將其關聯到不同的事件處理器

  3. 類型

    	1.連接應答處理器:對連接服務器的各個客戶端進行應答;networking.c/acceptTcpHandler 
    	2. 命令請求處理器:接收客戶端傳來的命令請求;				    networking.c/readQuertFormClient
    	3. 命令回覆處理器:向客戶端返回命令執行結果;					networking.c/sendReplayToClient
    	4. 複製功能處理器:主服務器和從服務器進行復制操作;    
    

時間事件

  1. 說明
    Redis 服務器中的一些操作,需要在給定的時間點執行,時間事件就是這一類定時操作的抽象。
    時間事件分爲定時事件(只在指定時間到達一次)、週期性事件(每個一段時間到達一次)兩類。
    一般只執行 serverCron 函數的一個週期性時間事件。
    時間事件的實際處理時間會比設定的到達時間晚一點。
  2. 應用 serverCron
    	1. 更新服務器的各類統計信息,比如時間、內存佔用、數據庫佔用等。
    	2. 清理數據庫中的過期鍵值對。
    	3. 關閉和清理連接失敗的客戶端。
    	4. 嘗試進行 AOF 或 RDB 持久化操作。
    	5. 如果服務器是主服務器,那麼對從服務器進行定期同步。
    	6. 如果處於集羣模式,對集羣進行定期同步和連接測試。
    	7. 可以通過修改 hz 選項來調整 serverCron 的每秒執行次數, redis.conf / hz,通過 config get hz 獲取當前 hz。默認爲每秒 執行 10 次。
    

文件事件和時間事件之間時合作關係,服務器會輪流處理兩種事件,處理過程中不會搶佔

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章