redis源碼閱讀筆記-- 事件

來源:互聯網
上載者:User
Redis 事件 一 、 事件綜述

1 檔案事件:redis是事件驅動程式,redis伺服器通過通訊端與用戶端進行串連,處理命令請求,產生命令回複,這些過程成為檔案事件。

2 時間事件:redis伺服器在指定時間或是周期性時間執行函數調用。Redis是單進程單執行緒模式,串列地執行檔案事件和時間事件,比如在AOF檔案的持久化操作的寫入與同步操作,redis進程先執行檔案事件處理用戶端命令請求然後回複命令回複,接著執行時間事件將,執行serverCron函數,調用flushAppendOnlyFile函數,將aof_buf緩衝區裡的寫命令寫入與同步到AOF檔案中。置於何時同步。在設定檔裡有三種選項:always:每次寫入就同步
everysec,距離上次同步時間超過1秒則同步 no表示由系統決定何時同步。 二、檔案事件

Redis基於Reactor模式開發了自己的網路事件處理器,被稱為檔案事件處理器。檔案事件處理器分為四個組成部分,通訊端,I/O多工程式,檔案事件指派器和事件處理器。檔案事件處理器以單線程方式運行,使用 I/O多工程式同時監聽多個通訊端,當通訊端準備好執行串連應答,讀取,寫入等操作時,相應地檔案事件就會產生,向事件指派器傳遞通訊端。由於監聽多個通訊端,所以多個事件可能並發出現,I/O多工技術將所有產生檔案事件的通訊端放入一個有序,同步的隊列中,指派器從隊列另一頭取出通訊端,根據通訊端關聯的事件調用相應地處理器。

2.檔案事件處理器:
串連應答處理器,命令要求處理常式,命令回複處理器 三、時間事件

Redis將時間事件分為定時事件和定期事件,程式在指定時間執行或是在指定周期執行。時間事件主要有三個屬性:id,when:表示事件執行的時間,是一個UNIX時間戳記,函數,當時間到了就調用此函數處理事件。

伺服器將所以時間事件放在一個無序鏈表中,時間事件是一個節點,時間事件執行器遍曆整個鏈表,尋找已到達的時間事件,調用相應地事件處理器。

serverCron函數:正常情況下redis伺服器只有一個時間事件serverCron函數。它讓redis可以定期地對自身資源和狀態進行檢查與調整,每隔100毫秒執行一次,更新系統緩衝時間,清理資料庫中的到期索引值對(定期刪除策略),關閉串連失效的用戶端,進行AOF(檔案事件之後flushappendonfile寫入,然後根據設定檔 決定什麼時候同步)或RDB(save選項)持久化操作。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.