Redis是單線(xiàn)程的,為上下文切換線(xiàn)程節(jié)省了大量時(shí)間。
為什么redis是單線(xiàn)程的?
一、官網(wǎng)解釋
由于Redis是基于內(nèi)存的操作,因此CPU并不是Redis的瓶頸。 Redis的瓶頸很可能是機(jī)器內(nèi)存或網(wǎng)絡(luò)帶寬的大小。 既然單線(xiàn)程易于實(shí)現(xiàn)并且CPU不會(huì)成為瓶頸,那采用單線(xiàn)程解決方案是合乎邏輯的了。
(視頻教程推薦:java視頻)
二、性能指標(biāo)
普通筆記本可以輕松地每秒處理數(shù)十萬(wàn)個(gè)請(qǐng)求。
三、詳細(xì)原因
1、不需要各種鎖的性能消耗
Redis的數(shù)據(jù)結(jié)構(gòu)并非全都是簡(jiǎn)單的鍵值(Key-Value),而是有復(fù)雜的結(jié)構(gòu),如列表(list)和哈希(hash)。 這些結(jié)構(gòu)可以執(zhí)行細(xì)粒度的操作,例如在長(zhǎng)列表后面添加元素并將其添加到哈希(hash)或刪除對(duì)象。
這些操作可能需要非常大量的鎖,從而導(dǎo)致同步開(kāi)銷(xiāo)顯著增加。 簡(jiǎn)而言之,在單線(xiàn)程的情況下,不需要考慮各種鎖,沒(méi)有鎖釋放操作,也沒(méi)有由于可能的死鎖而導(dǎo)致的性能消耗。
2、單線(xiàn)程多進(jìn)程集群方案
單線(xiàn)程的功能實(shí)際上非常強(qiáng)大,每個(gè)內(nèi)核的效率也很高。 與單線(xiàn)程相比,多線(xiàn)程自然可以具有更高的性能限制。 但是,在當(dāng)今的計(jì)算環(huán)境中,甚至單機(jī)多線(xiàn)程限制通常也無(wú)法滿(mǎn)足。需要進(jìn)一步探索的是多服務(wù)器群集群方案,并且這些方案中的多線(xiàn)程技術(shù)仍然是不可用的。
所以單線(xiàn)程、多進(jìn)程的集群不失為一個(gè)不錯(cuò)的解決方案。
推薦教程:java入門(mén)程序