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