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