《Redis官方文檔》事件庫

杜老師說 2022-01-07 07:17:44 阅读数:422

redis 官方 事件

原文鏈接 譯者:flashair

究竟為什麼需要一個事件庫呢?讓我們通過下面一系列問答來了解為什麼。

問:你希望網絡服務器持續不斷地做什麼事?

答:監聽端口上進來的連接請求並接收它們。

問:調用套接字的Accept方法產生一個描述符,我們用這個描述符做什麼?

答:保存這個描述符,並在它上面完成一次非阻塞讀寫操作。

問:為什麼讀寫操作必須是非阻塞式的?

答:如果文件操作(在Unix系統中甚至於套接字都被描述成一個文件)是阻塞式的那麼當它在一次文件I/O操作中被鎖定時它怎麼可能接收另外一個請求

問:我猜我必須在套接字上做很多次非阻塞式讀寫操作來得知它何時才能准備好,我說得對嗎?

答:是的,這些就是事件庫為你做的事。現在你知道了吧。

問:那事件庫是怎麼來完成它需要做的事呢?

答:事件庫使用操作系統提供的輪詢設施配合定時器一起完成工作。

問:那麼有沒有開源事件庫來完成上面你描述的工作呢?

答:是的。libevent和libev就是我首先想到的兩個這樣的事件庫。

問:Redis使用了這樣的開源事件庫來處理套接字輸入輸出了嗎?

答:並沒有,由於種種原因Redis實現了自己的事件庫。

原創文章,轉載請注明: 轉載自並發編程網 – ifeve.com本文鏈接地址: 《Redis官方文檔》事件庫

FavoriteLoading添加本文到我的收藏
版权声明:本文为[杜老師說]所创,转载请带上原文链接,感谢。 https://gsmany.com/2022/01/202201070717440921.html