(Redis設計與實現-5) 事件

redis使用單線程架構和I/O多路複用模型來實現高性能的內存數據庫服務。一條命令從客戶端到服務端不會馬上被執行,全部命令都會進入一個隊列中,而後逐個被執行。

一.文件事件redis

Redis服務器經過套接字與客戶端進行鏈接,文件事件就是服務器對套接字操做的抽象。文件事件處理器使用I/O多路複用程序來同時監聽多個套接字,並根據套接字目前執行的任務來爲套接字關聯不一樣的事務處理器。當被監聽的套接字準備好執行鏈接應答、讀取、寫入、關閉等操做時,與操做相對應的文件事件就會產生,這時文件事件處理器就會調用套接字以前關聯好的事件處理器來處理這些事件。

圖片描述

文件事件處理器 由四個部分組成:套接字、I/O多路複用程序、文件事件分派器以及事件處理器
I/O多路複用程序老是會將全部產生事件的套接字放到一個隊列裏面,而後經過這個隊列以有序、同步、每次一個套接
字的方式向文件事件分派器傳送套接字。當上一個套接字產生的事件被處理完畢以後,I/O多路複用程序纔會繼續向文
件事件分派器傳送下一個套接字。


二.時間事件數據庫

服務器對定時操做的抽象。事件分爲:定時事件(指定時間執行一次);週期性事件(每隔一段時間執行一次)。目前Redis只使用週期性事件,而沒有使用定時事件。
服務器將全部時間事件都放在一個無序鏈表中,每當時間事件執行器運行時,遍歷整個鏈表,查找全部已到達的時間事
件,並調用相應的事件處理器
相關文章
相關標籤/搜索