更新時(shí)間:2022-04-22 09:30:18 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽2491次
Redis單線程為什么快?動(dòng)力節(jié)點(diǎn)小編來(lái)為大家解答。
1.完全基于內(nèi)存操作,速度非常快。數(shù)據(jù)存儲(chǔ)在內(nèi)存中,類(lèi)似于 hashmap。優(yōu)點(diǎn)是搜索和操作的時(shí)間復(fù)雜度是O(1)
2.數(shù)據(jù)結(jié)構(gòu)簡(jiǎn)單,對(duì)數(shù)據(jù)的操作也簡(jiǎn)單。redis中常用數(shù)據(jù)結(jié)構(gòu)是專(zhuān)門(mén)設(shè)計(jì)的。
3.單線程用于避免不必要的上下文切換和競(jìng)爭(zhēng)條件。不存在多進(jìn)程或多線程造成的切換消耗CPU。無(wú)需考慮各種鎖。沒(méi)有鎖和釋放鎖。操作。
4.使用多I/O復(fù)用模型,非阻塞IO。
5.底層模型不同,它們之間的底層實(shí)現(xiàn)方式以及與客戶端的通信應(yīng)用協(xié)議不同。Redis 直接自己構(gòu)建了 VM 機(jī)制,因?yàn)橐话阆到y(tǒng)調(diào)用系統(tǒng)函數(shù),會(huì)浪費(fèi)一定的時(shí)間來(lái)移動(dòng)和請(qǐng)求。
多 I/O 多路復(fù)用模型:多 I/O 多路復(fù)用模型使用 select、poll 和 epoll 來(lái)同時(shí)監(jiān)控多個(gè)流的 I/O 事件。空閑時(shí),當(dāng)前線程將被阻塞。當(dāng)一個(gè)或多個(gè)流發(fā)生 I/O 事件時(shí),它們會(huì)從阻塞狀態(tài)中喚醒,所以程序會(huì)對(duì)所有的流進(jìn)行一次輪詢(epoll 只輪詢那些真正發(fā)出事件的流),并且只按順序這種方式避免了很多無(wú)用的操作。
這里的“多路徑”是指多個(gè)網(wǎng)絡(luò)連接,“多路復(fù)用”是指多路復(fù)用同一個(gè)線程。**使用多I/O復(fù)用技術(shù),可以讓單線程高效處理多個(gè)連接請(qǐng)求(盡量減少網(wǎng)絡(luò)IO的時(shí)間消耗),而且Redis對(duì)內(nèi)存中數(shù)據(jù)的操作速度非常快,也就是說(shuō)操作不會(huì)成為瓶頸影響 Redis 的性能,主要是因?yàn)橐陨蠋c(diǎn),Redis 具有很高的吞吐量。如果大家想了解更多相關(guān)知識(shí),不妨來(lái)關(guān)注一下動(dòng)力節(jié)點(diǎn)的Redis教程,里面還有更豐富的知識(shí)等著大家去學(xué)習(xí),希望對(duì)大家能夠有所幫助哦。
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743