1. 程式人生 > 其它 >Redis事件機制

Redis事件機制

Redis伺服器是一個事件驅動程式,伺服器需要處理以下兩類事件:

  • 檔案事件:Redis通過套接字與客戶端連線,檔案事件是伺服器對套接字操作的抽象。
  • 時間事件:Redis伺服器中的一些操作需要給定的時間點執行,時間事件時對這類定時操作的抽象。

檔案事件

檔案事件處理器使用I/O多路複用同時監聽多個套接字。

檔案事件處理器的構成

檔案事件處理器的四個組成部分:套接字、I/O多路複用程式、檔案事件分派器以及事件處理器。

檔案事件是對套接字操作的抽象,每當一個套接字準備好執行連線應答(accept)、寫入、讀取、關閉等操作

時,就會產生一個檔案事件。一個伺服器會連線多個套接字,所以多個檔案事件可能併發出現。

I/O多路複用程式負責監聽多個套接字。儘管會併發,但是產生事件都放到一個佇列裡,以有序、同步、每次一個

套接字的方式向分派器傳送套接字。

I/O多路服用程式的實現

通過包裝select、epoll、evport和kqueue這些函式庫來實現的。提供相同的API,可以互換。

檔案事件的處理器

連線應答器

請求處理器

命令回覆器

複製處理器

時間事件

未完待續

Reference

《Redis設計與實現》