本篇文章帶大家聊聊Redis中單線程的reactor模型,I/O模型,還有多線程版本I/O模型,希望對大家有所幫助!
redis 的高性能純內(nèi)存訪問,所有數(shù)據(jù)都在內(nèi)存中,所有的運算都是內(nèi)存級別的運算,內(nèi)存響應(yīng)時間的時間為納秒級別。因此 redis 進程的 cpu 基本不存在磁盤 I/O 等待時間、內(nèi)存讀寫性能問題,CPU 不是 redis 的瓶頸(內(nèi)存大小和網(wǎng)絡(luò)I/O 才是 redis 的瓶頸,也就是客戶端和服務(wù)端之間的網(wǎng)絡(luò)傳輸延遲)。
成都創(chuàng)新互聯(lián)公司長期為近千家客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為潮南企業(yè)提供專業(yè)的成都做網(wǎng)站、網(wǎng)站設(shè)計,潮南網(wǎng)站改版等技術(shù)服務(wù)。擁有十余年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。【相關(guān)推薦:Redis視頻教程】采用單線程模型,單線程實現(xiàn)簡單。避免了多線程頻繁上下文切換,以及同步機制如鎖帶來的開銷簡單高效的基礎(chǔ)數(shù)據(jù)結(jié)構(gòu):動態(tài)字符串(SDS),鏈表,字典,跳躍鏈表,整數(shù)集合和壓縮列表。然后 redis 在這個基礎(chǔ)上去實現(xiàn)用戶能操作的對象:字符串,列表,哈希,集合,有序集合等對象reactor 模式的網(wǎng)絡(luò)事件處理器。它使用了 I/O 多路復(fù)用去同時監(jiān)控多個套接字,這是一種高效的I/O模型。
reactor 相關(guān)知識可以看下這篇文章 框架篇:見識一下linux高性能網(wǎng)絡(luò)IO+Reactor模型為什么使用單線程采用單線程,避免了不必要的上下文切換和競爭條件;不存在多線程導(dǎo)致的切換而消耗CPU不用考慮各種鎖的問題,不存在加鎖和釋放鎖的的操作,沒有因為可能出現(xiàn)的死鎖而導(dǎo)致的性能消耗簡單可維護,多線程模式會使得程序的編寫更加復(fù)雜和麻煩,單線程實現(xiàn)易實現(xiàn)redis 是單線程系統(tǒng)?
我們常說 redis 單線程是指其網(wǎng)絡(luò)事件處理模型 reactor 是單線程如果一次 client 請求會刪除幾百萬 keys 值,那么這條命令可能會導(dǎo)致阻塞。在 redis 4.0 選擇引入多線程來實現(xiàn)這一類非阻塞的命令在 redis6.0 版本正式引入多線程去處理客戶端的 I/O 讀寫響應(yīng),而 redis 命令事件的處理還是在主線程單線處理假如是針對整個 redis 系統(tǒng),則一直有其他線程去處理異步任務(wù),如 AOF、RDB 的同步redis I/O模型redis 處理快,不單單因為它是個單線程純內(nèi)存系統(tǒng),還有它采用了 Reactor 模型,使用 I/O 多路復(fù)用來實現(xiàn)對外部請求的處理,減少網(wǎng)絡(luò)連接、讀寫等待時間。
使其在網(wǎng)絡(luò) I/O 操作中能并發(fā)處理大量的客戶端請求,實現(xiàn)高吞吐率,高并發(fā)redis 的多線程版本I/O模型 6.0
更多編程相關(guān)知識,請訪問:編程入門!!
分享標(biāo)題:Redis學(xué)習(xí)之聊聊單線程的reactor模型
網(wǎng)址分享:http://muchs.cn/article42/cghshc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、微信公眾號、網(wǎng)站維護、做網(wǎng)站、App開發(fā)、網(wǎng)站營銷
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)