Redis事件機制
阿新 • • 發佈:2021-09-29
Redis伺服器是一個事件驅動程式,伺服器需要處理以下兩類事件:
- 檔案事件:Redis通過套接字與客戶端連線,檔案事件是伺服器對套接字操作的抽象。
- 時間事件:Redis伺服器中的一些操作需要給定的時間點執行,時間事件時對這類定時操作的抽象。
檔案事件
檔案事件處理器使用I/O多路複用同時監聽多個套接字。
檔案事件處理器的構成
檔案事件處理器的四個組成部分:套接字、I/O多路複用程式、檔案事件分派器以及事件處理器。
檔案事件是對套接字操作的抽象,每當一個套接字準備好執行連線應答(accept)、寫入、讀取、關閉等操作
時,就會產生一個檔案事件。一個伺服器會連線多個套接字,所以多個檔案事件可能併發出現。
I/O多路複用程式負責監聽多個套接字。儘管會併發,但是產生事件都放到一個佇列裡,以有序、同步、每次一個
套接字的方式向分派器傳送套接字。
I/O多路服用程式的實現
通過包裝select、epoll、evport和kqueue這些函式庫來實現的。提供相同的API,可以互換。
檔案事件的處理器
連線應答器
請求處理器
命令回覆器
複製處理器
時間事件
未完待續
Reference
《Redis設計與實現》