Redis服務器是一個事件驅動程序,服務器需要處理一下兩類事件:
1、文件事件:Redis服務器通過套接字與客戶端(或者其他redis服務器)進行連接,而文件事件就是服務器對套接字操作的一抽象。
2、時間事件:Redis服務器的一些操作(ServerCron)需要在給定時間點執行。
12.1 文件事件
Redis基於Reactor模式開發了自己的網絡事件處理器file event handler
- 文件事件處理器使用IO對路複用程序來同時監聽多個套接字,並根據套接字目前執行的任務來爲套接字關聯不同的事件處理器。
- 當被監聽的套接字準備好執行連接應答、讀取、寫入、關閉等操作時,與操作相對應的文件事件就會產生,這時文件處理器就會調用套接字之前管理好的時間處理器來處理。
12.1.1 文件事件處理器的構成
12.1.2 IO多路複用程序的實現
12.1.3 事件的類型
io多路複用程序可以監聽多個套接字的ae.h/AE_READABLE
時間。
12.1.4 API
12.1.5 文件事件的處理器
12.2 時間事件
- 定時時間:在指定時間之後執行一次
- 週期性時間:每隔一指定時間就執行一次。
12.2.1 實現
12.2.2 API
12.2.3 時間事件應用實例:serverCron函數
hz
調整頻率