1. 程式人生 > >Redis(快取) 相關問題總結

Redis(快取) 相關問題總結

1、Redis為什麼是單執行緒

Redis是基於記憶體操作而CPU又不是Redis的瓶頸,Redis的瓶頸最有可能來自記憶體和網路頻寬。單執行緒實現起來更簡單,cpu又不是瓶頸,所以Redis是由單執行緒實現的。這裡說的單執行緒,是指處理我們的網路請求的時候是隻有一個執行緒,一個Redis server的執行肯定不只是一個執行緒,例如開啟持久化的時候就是以一個子執行緒執行。官方FAQ(常見問題解答)中提到Redis4.0以後在某一些方面用到多執行緒操作。

2、如果萬一CPU成為你的Redis瓶頸了,或者,你就是不想讓伺服器其他核閒置,那怎麼辦?

 開啟多個Redis例項。

3、Redis可以處理高併發請求嗎

當然可以,Redis採用佇列模式將併發請求變為序列訪問,採用多路 I/O 複用技術可以讓單個執行緒高效的處理多個連線請求

4、Redis為什麼快

基於記憶體的操作、單執行緒沒有執行緒的上下文切換損耗,不用去考慮各種鎖的問題、使用多路I/O複用模型,非阻塞IO、資料結構簡單,對資料操作也簡單,Redis中的資料結構是專門進行設計的

橫軸是連線數,縱軸是QPS(每秒查詢數) 

5、單執行緒快還是多執行緒快

純粹的比較多執行緒和單執行緒誰快是沒有意義的,不同場景下兩者各有優勢。多執行緒是為了提高cpu的利用率,不讓cpu在等待中白白浪費資源。

Redis參考資料:

https://blog.csdn.net/chenyao1994/article/details/79491337

https://blog.csdn.net/qqqqq1993qqqqq/article/details/77538202

https://mp.weixin.qq.com/s/gEU8HtsQNPXY8bzkK-Qllg