redis單執行緒問題

2022-07-05 13:36:15 字數 521 閱讀 3822

1.redis的單執行緒指的是什麼單執行緒?

同乙個時間點只處理乙個客戶端的連線,也就是redis網路模組的單執行緒。

2.redis為什麼設計成單執行緒

具體作者怎麼想的,我不知道,我說一下我的理解

(1)redis用的是非阻塞io,非阻塞i/o本身就可以是單執行緒處理多個請求

(2)如果用多執行緒,就要考慮執行緒的上下文切換,和鎖的請求和釋放,這些操作也比較耗時,鎖等待更容易把業務執行緒池佔滿

(3)在我看來,redis的設計理念就是短平快,在保證完全記憶體計算的情況下,能序列的地方就序列,在處理socket請求這塊採用了非阻塞io,並且是純記憶體操作,乙個event loop(請求事件)下來,幾乎沒有等待點

3.redis是單執行緒為什麼這麼快

(1) 純記憶體操作

(2) 非同步非阻塞 i/o

(3) 單執行緒,避免了上下文切換和執行緒鎖

4.服務效能三大殺手

(1) 大量執行緒導致的執行緒切換開銷

(2) 請求和釋放鎖

(3) 非必要的記憶體拷貝

Redis單執行緒

redis 的單執行緒主要是指 redis 的網路 io 和鍵值對讀寫是由乙個執行緒來完成的,這也是 redis 對外提供鍵值儲存服務的主要流程。當多個客戶端發起命令,這些命令併發執行時,在redis內部,會排隊逐個執行,也就是執行命令的那個操作是由乙個執行緒執行的。但 redis 的其他功能,比如...

Redis單執行緒理解

簡介 從接觸redis到現在,一直被它的單執行緒問題困擾,這對於乙個苛求原理的我來說是種折磨,今天吃飯途中看了幾篇部落格,茅塞頓開。個人理解 redis分客戶端和服務端,一次完整的redis請求事件有多個階段 客戶端到伺服器的網路連線 redis讀寫事件發生 redis服務端的資料處理 單執行緒 資...

redis單執行緒模型

redis基於reactor模式開發了自己的網路事件處理器,稱之為檔案事件處理器 file event hanlder 檔案事件處理器由socket io多路復用程式 檔案事件分派器 dispather 事件處理器 handler 四部分組成。io多路復用程式會同時監聽多個socket,當被監聽的s...