深入淺出redis事件框架

2021-08-26 12:46:02 字數 953 閱讀 5479

//eventloop

typedef struct aeeventloop aeeventloop;

//註冊的檔案事件

typedef struct aefileevent aefileevent;

//發生的檔案事件

typedef struct aefiredevent aefiredevent;

//時間事件(鍊錶結構)

typedef struct aetimeevent aetimeevent;

//epoll的封裝

typedef struct aeapistate aeapistate;

見圖:2.1.1) 產生乙個eventloop(見ae.c:aecreateeventloop)

2.1.2)新增乙個時間事件(見ae.c:aecreatetimeevent)

2.1.3)註冊乙個檔案事件(見ae.c:aecreatefileevent)

2.1.4) 進入無限輪詢(見ae.c::aemain)

從epoll中獲取準備好的檔案事件(連線、讀、寫)(見ae_epoll.c:aeapipoll)

遍歷準備好的檔案事件,如果是可讀,就呼叫用讀函式,如果是可寫就呼叫寫函式

時間事件處理

啟動完畢之後的狀態見圖:

假設在啟動時新增的檔案事件fd為6,即伺服器的監聽套接字

2.2.1)客戶端發起連線(./redis-cli)

此時連線已建立(新增),就等待客戶端發請求了

狀態見圖:

2.2.2)客戶端發請求(set foo bar)

狀態見圖

2.2.3) 服務端響應

狀態如圖:

2.2.4) 客戶端關閉連線(ctrl+c)

狀態如圖:

(系統唯一的servercron每次都會返回100ms)

從上面應該可以看到

但也有潛在的問題

DOM 事件的深入淺出(二)

在dom事件的深入淺出 一 中,我主要給大家講解了不同dom級別下的事件處理程式,同時介紹了事件冒泡和捕獲的觸發原理和方法。本文將繼續介紹dom事件中的知識點,主要側重於dom事件中event物件的屬性和方法。那麼什麼是dom事件中event物件呢?事件物件 event object 指的是與特定事...

深入淺出sizeof

int佔 位元組,short佔 位元組 1.0 回答下列問題 答案在文章末尾 1.sizeof char 2.sizeof a 3.sizeof a 4.strlen a 如果你答對了全部四道題,那麼你可以不用細看下面關於sizeof的論述。如果你答錯了部分題目,那麼就跟著我來一起 關於sizeof...

深入淺出ShellExecute

ipconfig c log.txt應如何處理?二樓的朋友,開啟拔號網路這樣 shellexecute null,open c windows rundll32.exe shell32.dll,control rundll c windows system telephon.cpl null,sw ...