Redis學(xué)習(xí)之聊聊單線程的reactor模型

發(fā)布時(shí)間:2024-04-09
本篇文章帶大家聊聊redis中單線程的reactor模型,i/o模型,還有多線程版本i/o模型,希望對(duì)大家有所幫助!
redis 的高性能純內(nèi)存訪問,所有數(shù)據(jù)都在內(nèi)存中,所有的運(yùn)算都是內(nèi)存級(jí)別的運(yùn)算,內(nèi)存響應(yīng)時(shí)間的時(shí)間為納秒級(jí)別。因此 redis 進(jìn)程的 cpu 基本不存在磁盤 i/o 等待時(shí)間、內(nèi)存讀寫性能問題,cpu 不是 redis 的瓶頸(內(nèi)存大小和網(wǎng)絡(luò)i/o 才是 redis 的瓶頸,也就是客戶端和服務(wù)端之間的網(wǎng)絡(luò)傳輸延遲)。
【相關(guān)推薦:redis視頻教程】采用單線程模型,單線程實(shí)現(xiàn)簡單。避免了多線程頻繁上下文切換,以及同步機(jī)制如鎖帶來的開銷簡單高效的基礎(chǔ)數(shù)據(jù)結(jié)構(gòu):動(dòng)態(tài)字符串(sds),鏈表,字典,跳躍鏈表,整數(shù)集合和壓縮列表。然后 redis 在這個(gè)基礎(chǔ)上去實(shí)現(xiàn)用戶能操作的對(duì)象:字符串,列表,哈希,集合,有序集合等對(duì)象reactor 模式的網(wǎng)絡(luò)事件處理器。它使用了 i/o 多路復(fù)用去同時(shí)監(jiān)控多個(gè)套接字,這是一種高效的i/o模型。
reactor 相關(guān)知識(shí)可以看下這篇文章 框架篇:見識(shí)一下linux高性能網(wǎng)絡(luò)io reactor模型為什么使用單線程采用單線程,避免了不必要的上下文切換和競爭條件;不存在多線程導(dǎo)致的切換而消耗cpu不用考慮各種鎖的問題,不存在加鎖和釋放鎖的的操作,沒有因?yàn)榭赡艹霈F(xiàn)的死鎖而導(dǎo)致的性能消耗簡單可維護(hù),多線程模式會(huì)使得程序的編寫更加復(fù)雜和麻煩,單線程實(shí)現(xiàn)易實(shí)現(xiàn)redis 是單線程系統(tǒng)?
我們常說 redis 單線程是指其網(wǎng)絡(luò)事件處理模型 reactor 是單線程如果一次 client 請(qǐng)求會(huì)刪除幾百萬 keys 值,那么這條命令可能會(huì)導(dǎo)致阻塞。在 redis 4.0 選擇引入多線程來實(shí)現(xiàn)這一類非阻塞的命令在 redis6.0 版本正式引入多線程去處理客戶端的 i/o 讀寫響應(yīng),而 redis 命令事件的處理還是在主線程單線處理假如是針對(duì)整個(gè) redis 系統(tǒng),則一直有其他線程去處理異步任務(wù),如 aof、rdb 的同步redis i/o模型redis 處理快,不單單因?yàn)樗莻€(gè)單線程純內(nèi)存系統(tǒng),還有它采用了 reactor 模型,使用 i/o 多路復(fù)用來實(shí)現(xiàn)對(duì)外部請(qǐng)求的處理,減少網(wǎng)絡(luò)連接、讀寫等待時(shí)間。
使其在網(wǎng)絡(luò) i/o 操作中能并發(fā)處理大量的客戶端請(qǐng)求,實(shí)現(xiàn)高吞吐率,高并發(fā)redis 的多線程版本i/o模型 6.0
更多編程相關(guān)知識(shí),請(qǐng)?jiān)L問:編程入門!!
上一個(gè):一個(gè)g等于多少mb流量(一個(gè)g是多少mb流量換算表)
下一個(gè):行為人出售,運(yùn)輸假幣后又使用的定什么罪

德國winter instruments高度表
茶水煮飯的神奇效用
潤滑油檢測-銅片腐蝕
厚聲1206W4F3573T5E今日行情、最新報(bào)價(jià)
日本相馬光學(xué)SOMA太陽能光譜儀S-2440modelⅡ
申安滅菌器的準(zhǔn)備工作和日常維護(hù)應(yīng)該怎么做
保障青稞面加工設(shè)備生產(chǎn)環(huán)境的衛(wèi)生安全
冬季溫室樹樁盆景的管理法
智慧工廠建設(shè)中法米特智能渦輪流量計(jì)的搭配使用
大葉黃楊瘡痂病防治
十八禁 网站在线观看免费视频_2020av天堂网_一 级 黄 色 片免费网站_绝顶高潮合集Videos