Redis的單執行緒架構

2021-10-02 02:35:42 字數 830 閱讀 2920

redis使用了單執行緒架構 和 i/o多路復用模型來實現高效能的記憶體資料庫服務。 這裡通過 多個客戶端 命令呼叫的例子說明 redis單執行緒命令處理機制,接著分析 redis單執行緒模型為什麼效能如此之高,最終給出為什麼 理解單執行緒模型是使用和運維redis的關鍵。

開啟三個redis-cli客戶端同時執行命令

客戶端1設定乙個字串鍵值對:

127.0.0.1:6379> set hello world
客戶端2對counter做自增操作:

127.0.0.1:6379> incr counter
客戶端3對counter做自增操作:

127.0.0.1:6379> incr counter
因為redis是單執行緒來處理命令的,所以 一條命令從客戶端達到服務端不會立刻被執行,所有命令都會進入乙個佇列中,然後逐個被執行。所以上面3個客戶端命令的執行順序是不確定的, 但是 可以確定不會有兩條命令被同時執行,所以兩條incr命令無論怎麼執行最終結果都是2, 不會產生併發問題,這就是 redis單執行緒的基本模型。但是像傳送命令、返回結果、命令排隊肯定不像描述的這麼簡單,redis使用了i/o多路復用技術來 解決i/o的問題

為什麼redis使用單執行緒模型會達到每秒萬級別的處理能力呢?歸結為三點:

目前redis6.0官方在2023年年底發布,其中引入的最大的的改變為支援多執行緒io。詳細使用博主尚未深入研究,大家可一起學習分享。

redis的單執行緒架構

redis很快,官網給出的資料是10萬 秒,當然是跟機器的配置有關係的,redis是使用單執行緒架構和io多路復用來實現高效能 redis單執行緒處理命令的機制 redis客戶端和服務端的通訊大致可分為三個步驟 1.傳送命令 2.執行命令 3返回結果 當多個redis命令同時到達伺服器端時,redi...

Redis單執行緒

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

redis的單執行緒

1 完全基於記憶體,絕大部分請求是純粹的記憶體操作,非常快速。資料存在記憶體中,類似於hashmap,hashmap的優勢就是查詢和操作的時間複雜度都是o 1 2 資料結構簡單,對資料操作也簡單,redis中的資料結構是專門進行設計的 3 採用單執行緒,避免了不必要的上下文切換和競爭條件,也不存在多...