首页
/
每日頭條
/
圖文
/
讓人秒懂的redis的事件處理機制
讓人秒懂的redis的事件處理機制
更新时间:2024-10-08 05:19:17

Redis服務器是一個事件驅動的程序,有以下兩類事件:

  • 文件事件:Redis服務器通過套接字與客戶端或者其他的Redis服務器連接,而文件事件就是服務器套接字操作的抽象。與客戶端或者其它服務器通信産生相應的文件事件,服務器通過監聽處理這些事件來完成一系列的網絡通信操作。
  • 時間事件:Redis服務器中的一些操作(如serverCron函數)需要在給定的時間點執行,而時間事件就是服務器對這類定時操作的抽象。

讓人秒懂的redis的事件處理機制(圖解Redis-事件實現機制)1

時間處理器結構

文件事件

Redis基于Reactor模式開發了自己的網絡事件處理器,利用IO多路複用程序來監聽套接字,當監聽到連接應答、讀取、寫入、關閉等操作是,就會調用對應關聯的事件處理器來處理。

文件事件處理器結構

讓人秒懂的redis的事件處理機制(圖解Redis-事件實現機制)2

文件處理器結構

Redis的事件框架由:I/O多路複用程序、aeMain主線程、事件分派、事件隊列等幾個核心元素組成,aeMain主線程一直輪詢事件隊列中就緒的I/O事件,然後通過事件綁定的處理器來處理業務。

文件事件執行過程

讓人秒懂的redis的事件處理機制(圖解Redis-事件實現機制)3

事件處理的過程

  • 服務器接收到客戶端發送的建立連接請求
  • 多路複用程序産生AE_READABLE事件發送至事件隊列
  • 連接應答處理器接收到事件,開始創建socket并将AE_READABLE事件與命令請求處理器關聯,連接建立成功,等待接收客戶端後續操作
  • 服務器接收到客戶端發送的命令請求
  • 多路複用程序産生AE_READABLE事件,發送至事件隊列
  • 命令請求處理器接收到事件,并從socket中讀取出命令信息并開始執行命令,同時将socket的AE_WRITABLE事件與命令回複處理器關聯
  • 多路複用程序産生AE_WRITABLE事件,并發送至事件隊列
  • 命令回複處理器接收到事件,開始向socket輸出本地操作的執行結果給客戶端,将socket的AE_WRITABLE事件與命令回複處理器解除關聯
時間事件

Redis的時間事件分為兩種,定時事件:讓一個函數在指定的時間之後執行一次;周期性任務:讓一個函數每間隔指定時間執行一次;時間事件是基于serverCron函數實現,該函數主要對服務器自身資源和狀态檢查和調整,确保服務器的長期、穩定運行,具體工作詳見本文中事件的調度執行。

事件的調度執行

讓人秒懂的redis的事件處理機制(圖解Redis-事件實現機制)4

事件的調度執行過程

  • apiPoll函數阻塞并等待文件事件産生,該方法避免了服務器對時間事件進行頻繁的輪詢,該函數有阻塞過期,時間到達立即返回
  • 文件事件的到達是随機的,随着文件事件的執行,時間事件的到達時間開始接近,當時間事件執行時間到達後服務器開始執行時間事件
  • 文件事件與時間事件都是同步、有序、原子的執行的,整個過程盡量減少阻塞時間,耗時相對久的函數都會設置run_with_period(最大運行時長),當執行耗時比較久的函數時,Redis會采用子線程或子進程的方式來異步處理,比如持久化操作。
  • Redis 6.0對processEvents流程進行了優化,引入多線程模型提升eventLoop 處理效率,詳見:Redis多線程處理模型

以上就是Redis事件實現機制的介紹,如果各位還想了解更多,歡迎轉發評論 關注,Redis圖解系列專欄持續更新中。

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
愛豆的邪笑殺合集(搖滾愛豆們是如何被玩壞的)
愛豆的邪笑殺合集(搖滾愛豆們是如何被玩壞的)
     追星之路千千萬。作為骨灰級歌迷的我們曾經曆過日複一日的單曲循環,穿到塑性形變的Logo文化衫,逢人便安利的變态志願宣傳……這其中有思君不見之苦,也有超然自得之甜。然而近日外網流傳的幾部“追星”小說成了追星界的一大奇談與壯舉。妄想長得像現實,歌迷們此刻揚眉吐氣。快搬好小闆凳,我們來一探究竟。   翻譯編輯:李僞搖      瑪麗蓮·曼森奇遇記    ...
2024-10-08
一分鐘了解衛生巾(關于衛生巾的一切)
一分鐘了解衛生巾(關于衛生巾的一切)
     寫在前面   衛生巾再次在網絡上引起熱議,這已經是今年第二次大規模讨論。對女性來說,這是一個平常不過卻又值得嚴肅讨論的話題。事關女性健康,對于衛生巾,不僅是每一位女性,女性身邊的他,更應該了解這一切。   近日,#散裝衛生巾#的話題不斷發酵,詞條被閱讀了13.7億次以上。      三無衛生巾、女性月經貧困、女性月經健康等各種問題都得到了廣泛讨論。...
2024-10-08
word表格出現兩頁怎麼解決(Word表格從中間斷了)
word表格出現兩頁怎麼解決(Word表格從中間斷了)
  簡介:word中的表格有時候從中間斷開,分布在兩頁,顯得非常難看。如圖所示:      圖1   問:這是什麼原因?答:因為文字内容所占據的空間太大,表格在一頁放不下去,自動溢出到下一頁。   問:怎麼調整到一頁?答:把字号縮小,把行距縮小,删除多餘的段落标記、删減不必要的内容等。當縮小到一定程度時,表格會自動變成一頁。   如圖所示:      圖2 ...
2024-10-08
零基礎學全自動封邊機教程(趙姐教大家看闆材封邊)
零基礎學全自動封邊機教程(趙姐教大家看闆材封邊)
  大家好,今天來聊一聊闆材的封邊問題。EVA、PUR和激光封邊,你們聽說過嗎?   EVA和PUR都屬于膠水類型,EVA是物理固化可逆,通過加熱固體膠變成液體膠,熱熔封邊可以二次使用,成本低,但容易溢膠,還會有膠線,遇高溫會開裂。      PUR封邊是化學反應不可逆,采用德國PUR膠水,靠濕氣固化,不易受溫度影響導緻開裂,耐用美觀,純度僅次于激光封邊。激...
2024-10-08
畫江湖之不良人完整(李硯畫江湖之不良人正在熱播)
畫江湖之不良人完整(李硯畫江湖之不良人正在熱播)
     近日,改編自 國漫 IP 《 畫江湖之不良人 》,由 童輝、王豐 執導, 李硯、曹賽亞、陳添祥、何依蔓、于雷等主演,正在芒果 tv 全網獨播。 該劇自開播以來 備受關注,角色話題熱議不斷。這也是李硯繼上一部院線作品《天之書》之後的又一新作,也是他少有的古裝角色之一。      李硯在《畫江湖之不良人》中飾演的男主李星雲是一名神秘的孤兒,機緣巧合下被...
2024-10-08
Copyright 2023-2024 - www.tftnews.com All Rights Reserved