Redis是單執行緒還是多執行緒

2021-10-22 08:44:36 字數 866 閱讀 7130

準確一點來講,既不是單執行緒,也不是多執行緒

io執行緒:

記憶體處理執行緒:

服務端和客戶端建立 socket 連線,並分配處理執行緒

首先,主線程負責接收建立連線請求。當有客戶端請求和例項建立 socket 連線時,主線程會建立和客戶端的連線,並把 socket 放入全域性等待佇列中。緊接著,主線程通過輪詢方法把 socket 連線分配給 io 執行緒。

io 執行緒讀取並解析請求

主線程一旦把 socket 分配給 io 執行緒,就會進入阻塞狀態,等待 io 執行緒完成客戶端請求讀取和解析。因為有多個 io 執行緒在並行處理,所以,這個過程很快就可以完成。

主線程執行請求操作

等到 io 執行緒解析完請求,主線程還是會以單執行緒的方式執行這些命令操作。

io 執行緒回寫 socket 和主線程清空全域性佇列

當主線程執行完請求操作後,會把需要返回的結果寫入緩衝區,然後,主線程會阻塞等待 io 執行緒把這些結果回寫到 socket 中,並返回給客戶端。

和 io 執行緒讀取和解析請求一樣,io 執行緒回寫 socket 時,也是有多個執行緒在併發執行,所以回寫 socket 的速度也很快。等到 io 執行緒回寫 socket 完畢,主線程會清空全域性佇列,等待客戶端的後續請求。

在 redis 6.0 中,多執行緒機制預設是關閉的,如果需要使用多執行緒功能,需要在 redis.conf 中完成兩個設定。

參考極客時間redis核心技術與實戰專欄

Redis是多執行緒還是單執行緒?

沒錯,大家所熟知的 redis 確實是單執行緒模型,指的是執行 redis 命令的核心模組是單執行緒的,而不是整個 redis 例項就乙個執行緒,redis 其他模組還有各自模組的執行緒的。下面這個解釋比較好 一般來說 redis 的瓶頸並不在 cpu,而在記憶體和網路。如果要使用 cpu 多核,可...

redis單執行緒還是多執行緒

redis 是單執行緒模型,指的是執行 redis 命令的核心模組是單執行緒的,而不是整個 redis 例項就乙個執行緒,redis 其他模組還有各自模組的執行緒的。redis基於reactor模式開發了網路事件處理器,這個處理器被稱為檔案事件處理器。它的組成結構為4部分 多個套接字 io多路復用程...

Redis 到底是單執行緒還是多執行緒?

相對於多執行緒而言,可以說 redis 是單執行緒,但是這種說法也是不太準確的。為什麼呢?下面來分析一下 一 redis 單執行緒到底指什麼?沒錯,大家所熟知的 redis 確實是單執行緒模型,指的是執行 redis 命令的核心模組是單執行緒的,而不是整個 redis 例項就是乙個執行緒,redis...