為什麼Redis使用的是單執行緒

2021-10-17 09:54:06 字數 506 閱讀 8827

官方解釋如下:因為redis是基於記憶體的操作,cpu不是redis的瓶頸,redis的瓶頸最有可能是機器記憶體的大小或者網路頻寬。既然單執行緒容易實現,而且cpu不會成為瓶頸,那就順理成章地採用單執行緒的方案了。

上面的解釋不是很好理解,我就簡單說一說我自己的理解吧。我們知道,redis將資料存放在記憶體當中,這也就意味著,redis在運算元據時,不需要進行磁碟i/o。磁碟i/o是乙個比較耗時的操作,所以對於需要進行磁碟i/o的程式,我們可以使用多執行緒,在某個執行緒進行i/o時,cpu切換到當前程式的其他執行緒執行,以此減少cpu的等待時間。而redis直接操作記憶體中的資料,所以使用多執行緒並不能有效提公升效率,相反,使用多執行緒反倒會因為需要進行執行緒的切換而降低效率。

除此之外,使用多執行緒的話,多個執行緒間進行同步,保證執行緒的安全,也是需要開銷的。尤其是redis的資料結構都是一些實現較為簡單的集合結構,若使用多執行緒,將會頻繁地發生執行緒衝突,執行緒的競爭頻率較高,反倒會拖慢redis的響應速度。

綜上所述,redis為了保持簡單和高效,自然而然地就使用了單執行緒。

Redis為什麼是單執行緒

經過多方資料收集 總結 思考,結論如下 準確地來說,該問題是 為什麼redis採用單程序單執行緒模型 我們從兩個層次去理解 第乙個層次 我們多執行緒的使用情景是io密集型,目的是為了充分利用cpu資源。也就是說當乙個執行緒io等待的時候,另乙個執行緒可以進行執行,達到充分利用cpu資源的效果,不要讓...

Redis為什麼是單執行緒的

因為redis是基於記憶體的操作,cpu不是redis的瓶頸,redis的瓶頸最有可能是機器記憶體的大小或者網路頻寬。既然單執行緒容易實現,而且cpu不會成為瓶頸,那就順理成章地採用單執行緒的方案了。二 詳細原因 1 不需要各種鎖的效能消耗 redis的資料結構並不全是簡單的key value,還有...

為什麼redis是單執行緒的

redis是單執行緒的原因 1 單執行緒不需要各種鎖的效能消耗 2 單執行緒多程序集群方案 3 採用單執行緒避免了不必要的上下文切換和競爭條件,也不存在多程序或者多執行緒導致的切換而消耗cpu。簡單分析 推薦教程 redis教程 redis是基於記憶體的操作,cpu不是redis的瓶頸,redis的...