好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > 詳解Redis單線程的正確理解

詳解Redis單線程的正確理解

熱門標簽:日本中國地圖標注 北京400電話辦理收費標準 宿遷便宜外呼系統平臺 十堰營銷電銷機器人哪家便宜 超呼電話機器人 魔獸2青云地圖標注 鄭州人工智能電銷機器人系統 貴州電銷卡外呼系統 山東外呼銷售系統招商

很多同學對Redis的單線程和I/O多路復用技術并不是很了解,所以我用簡單易懂的語言讓大家了解下Redis單線程和I/O多路復用技術的原理,對學好和運用好Redis打下基礎。

一、Redis的單線程理解

Redis客戶端對服務端的每次調用都經歷了發送命令,執行命令,返回結果三個過程。其中執行命令階段,由于Redis是單線程來處理命令的,所有到達服務端的命令都不會立刻執行,所有的命令都會進入一個隊列中,然后逐個執行,并且多個客戶端發送的命令的執行順序是不確定的,但是可以確定的是不會有兩條命令被同時執行,不會產生并發問題,這就是Redis的單線程基本模型。

Redis服務器通過socket(套接字)與客戶端或其他Redis服務器進行連接,而文件事件就是服務器對socket操作的抽象。服務器與客戶端或其他服務器的通信會產生相應的文件事件,而服務器通過監聽并處理這些事件來完成一系列網絡通信操作。

Redis基于Reactor模式開發了自己的網絡事件處理器——文件事件處理器,文件事件處理器使用I/O多路復用程序來同時監聽多個socket(I/O多路復用技術下面有介紹),并根據socket目前執行的任務來為socket關聯不同的事件處理器。當被監聽的socket準備好執行連接應答、讀取、寫入、關閉等操作時,與操作相對應的文件事件就會產生,這時文件事件處理器就會調用socket之前已關聯好的事件處理器來處理這些事件。

文件事件處理器的構成:

 

注意:其中I/O多路復用程序通過隊列向文件事件分派器傳送socket

二、I/O多路復用技術

關于I/O多路復用(又被稱為“事件驅動”),首先要理解的是,操作系統為你提供了一個功能,當你的某個socket可讀或者可寫的時候,它可以給你一個通知。這樣當配合非阻塞的socket使用時,只有當系統通知我哪個描述符可讀了,我才去執行read操作,可以保證每次read都能讀到有效數據而不做純返回-1和EAGAIN的無用功,寫操作類似。

操作系統的這個功能是通過select/poll/epoll/kqueue之類的系統調用函數來實現,這些函數都可以同時監視多個描述符的讀寫就緒狀況,這樣,多個描述符的I/O操作都能在一個線程內并發交替地順序完成,這就叫I/O多路復用,這里的“多路”指的是多個網絡連接,“復用”指的是復用同一個Redis處理線程。(正如上圖所示)

采用多路 I/O 復用技術可以讓單個線程高效的處理多個連接請求(盡量減少網絡 I/O 的時間消耗),且 Redis 在內存中操作數據的速度非常快,也就是說內存內的操作不會成為影響Redis性能的瓶頸,所有 Redis 具有很高的吞吐量。

三、常見疑問解答

1、Redis的單線程為什么這么快?

1.完全基于內存,絕大部分請求是純粹的內存操作,非常快速。數據存在內存中,類似于HashMap,HashMap的優勢就是查找和操作的時間復雜度都是O(1);

2.數據結構簡單,對數據操作也簡單,Redis中的數據結構是專門進行設計的;

3.采用單線程,避免了不必要的上下文切換和競爭條件,也不存在多進程或者多線程導致的切換而消耗 CPU,不用去考慮各種鎖的問題,不存在加鎖釋放鎖操作,沒有因為可能出現死鎖而導致的性能消耗;

4.使用多路I/O復用模型,非阻塞I/O;

5.Redis直接自己構建了VM 機制 ,因為一般的系統調用系統函數的話,會浪費一定的時間去移動和請求;

2、為什么不采用多進程或多線程處理?

1.多線程處理可能涉及到鎖

2.多線程處理會涉及到線程切換而消耗CPU

3、單線程處理的缺點?

1.耗時的命令會導致并發的下降,不只是讀并發,寫并發也會下降

2.無法發揮多核CPU性能,不過可以通過在單機開多個Redis實例來完善

4、Redis不存在線程安全問題?

Redis采用了線程封閉的方式,把任務封閉在一個線程,自然避免了線程安全問題,不過對于需要依賴多個redis操作(即:多個Redis操作命令)的復合操作來說,依然需要鎖,而且有可能是分布式鎖。

到此這篇關于詳解Redis單線程的正確理解的文章就介紹到這了,更多相關Redis單線程內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Redis不是一直號稱單線程效率也很高嗎,為什么又采用多線程了?
  • redis單線程快的原因和原理
  • 淺談為什么單線程的redis那么快

標簽:江蘇 楊凌 吉安 朝陽 大慶 果洛 臺州 北京

巨人網絡通訊聲明:本文標題《詳解Redis單線程的正確理解》,本文關鍵詞  詳解,Redis,單線程,單,線程,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《詳解Redis單線程的正確理解》相關的同類信息!
  • 本頁收集關于詳解Redis單線程的正確理解的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 女人的隐私秘?祼??酒店| xxxx性bbbb欧美野外| 日本美女上床| 爽死你个放荡粗暴小淫货视频| 夜色直播.yy77tv| 国产精品久久久久毛片大屁完整版| 免费黄色小说在线阅读| 精品丝袜美腿国产一区| 我吸老师的丰满大乳奶水小说| 色鬼888综合久久人电影| 亚洲精品国产精品国自产99. | 重口XXOO变态另类高清| 亚洲女同老女人女同志| 热久久伊大人香蕉网老师| 美女脚丫足控福利视频| 午夜伦伦电影理论片A片不卡蜜爱| 亚洲国产精品97久久无色无码| 动漫美女被3d羞羞漫画| 人妻体内射精一区二区| 18女人腿打开无遮掩| 将军含着她的乳尖H无遮挡动漫| 久久久久久久久毛片无码| 汤唯《色戒》未删减版电影| 羞羞漫画未删减| 欧美乱大交xxxxx| 女教师~淫辱の触手3| 成人 无码 视频在线观看免费| 男生脱裤子互摸基基视频| 粘满精子的丝袜高跟鞋h| 妈咪湿透的三角裤| 亚洲综合久久无码欧美网站| 天天做天天爱天天一爽一毛片| 久久嫩草| 男生喷出精子视频在线观看| 丫鬟的艳史h| AV果冻传媒董小宛无码| 欧洲亚洲国产成人综合色婷婷小说| 综漫女主肉肉hhh文| 成年人视频在线看| 农村午夜理伦三级| 色婷婷国产精品综合在线观看|