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中的讀 寫 關閉 連線都轉化成了事件,然後...