Redis中的事件驅動庫只關注網絡IO,以及定時器。該事件庫處理下面兩類事件:
文件事件(file event):用于處理 Redis 服務器和客戶端之間的網絡IO。
時間事件(time eveat):Redis 服務器中的一些操作(比如serverCron函數)需要在給定的時間點執行,而時間事件就是處理這類定時操作的。
事件驅動庫的代碼主要是在src/ae.c中實現的,其示意圖如下所示。
aeEventLoop是整個事件驅動的核心,它管理著文件事件表和時間事件列表,不斷地循環處理著就緒的文件事件和到期的時間事件。