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