Redis為什麼是單執行緒,高併發快

2021-10-24 16:52:36 字數 723 閱讀 1094

1.redis是基於記憶體的,記憶體的讀寫速度非常快;

2.redis是單執行緒的,省去了很多上下文切換執行緒的時間;

3.redis使用多路復用技術,可以處理併發的連線。非阻塞io 內部實現採用epoll,採用了epoll+自己實現的簡單的事件框架。epoll中的讀、寫、關閉、連線都轉化成了事件,然後利用epoll的多路復用特性,絕不在io上浪費一點時間。

1.官方答案

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

2.效能指標

關於redis的效能,官方**也有,普通筆記本輕鬆處理每秒幾十萬的請求。

3.詳細原因

1)不需要各種鎖的效能消耗

redis的資料結構並不全是簡單的key-value,還有list,hash等複雜的結構,這些結構有可能會進行很細粒度的操作,比如在很長的列表後面新增乙個元素,在hash當中新增或者刪除

乙個物件。這些操作可能就需要加非常多的鎖,導致的結果是同步開銷大大增加。

總之,在單執行緒的情況下,就不用去考慮各種鎖的問題,不存在加鎖釋放鎖操作,沒有因為可能出現死鎖而導致的效能消耗。

2)單執行緒多程序集群方案

Redis為什麼是單執行緒還支援高併發

redis為什麼設計成單執行緒模式 因為redis是基於記憶體的讀寫操作,所以cpu不是效能瓶頸,而單執行緒更好實現,所以就設計成單執行緒模式 單執行緒模式省卻了cpu上下文切換帶來的開銷問題,也不用去考慮各種鎖的問題,不存在加鎖釋放鎖操作,沒有因為可能出現死鎖而導致的效能消耗。單執行緒為什麼快 完...

Redis為什麼是單執行緒

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

Redis為什麼是單執行緒 及高併發快的大原因詳解

1.redis是基於記憶體的,記憶體的讀寫速度非常快 2.redis是單執行緒的,省去了很多上下文切換執行緒的時間 3.redis使用多路復用技術,可以處理併發的連線。非阻塞io 內部實現採用epoll,採用了epoll 自己實現的簡單的事件框架。epoll中的讀 寫 關閉 連線都轉化成了事件,然後...