【每日八股】復習 Redis Day4:線程模型

文章目錄

  • 復習 Redis Day4:線程模型
    • 介紹一下 Redis 的線程模型
      • 核心線程模型(Redis 6.0 之前)
      • Redis 6.0+ 的多線程改進
      • Redis 真的是單線程嗎?
      • Redis 的線程模型剖析

上一篇 Redis 的應用我今天才完成,因此明天一并復習 Redis 的應用和線程模型,今天我們直接學習 Redis 線程模型。

復習 Redis Day4:線程模型

在這里插入圖片描述

介紹一下 Redis 的線程模型

Redis 的線程模式是其高性能的核心設計之一,其核心思想是「單線程處理命令 + 多線程輔助執行特定任務」。在 Redis 6.0 之前,單線程是 Redis 的核心線程模型,在 Redis 6.0 之后引入了多線程進行輔助。

核心線程模型(Redis 6.0 之前)

1. 單線程處理所有命令
主線程職責

  • 接收客戶端請求(網絡 I/O);
  • 解析命令、執行數據操作(如讀寫內存);
  • 返回響應結果。

單線程優勢

  • 避免鎖競爭:無需處理多線程并發問題;
  • 順序執行:所有命令順序執行,天然避免競態條件;
  • 高效內存訪問:單線程可充分利用 CPU 緩存局部性;

2. 多線程輔助任務

  • 后臺持久化:RDB 快照與 AOF 重寫啟用子進程來完成;
  • 異步刪除大 key:通過 UNLINK 命令(非阻塞刪除)觸發后臺線程清理。

Redis 6.0+ 的多線程改進

Redis 6.0 引入了「多線程網絡 I/O」,但命令執行仍然為單線程,其核心改進如下:
1. 多線程網絡 I/O

  • 主線程:負責監聽和分發客戶端連接請求
  • I/O 線程池:負責處理 socket 讀寫(解析請求和發送響應)。默認關閉,需要通過配置 io-threads N 啟用。命令的執行仍然由主線程單線程處理,保證操作的原子性
  • 性能提升:高并發場景下,網絡 I/O 多線程可顯著提升吞吐量。

2. 典型工作流

  1. 主線程接收新的連接請求,將連接的 Socket 分發給 I/O 線程;
  2. I/O 線程讀取請求并解析命令,將命令放入隊列;
  3. 主線程從隊列拉取命令,單線程執行并生成響應;
  4. I/O 線程將響應寫回客戶端。

Redis 真的是單線程嗎?

這個問題我把它當作一個「子問題」放在 Redis 線程模型簡述之下。Redis 在執行命令時確實是單線程,在 Redis 6.0 之后引入的多線程也只是為了并發地處理多路網絡 I/O 請求,在執行命令時仍然是單線程。

Redis 的線程模型剖析

Redis 內部使用一個「文件事件處理器(File Event Handler)」,它是單線程的,所以 Redis 才被稱作單線程模型。文件事件處理器采用 IO 多路復用機制監聽多個 socket,將產生事件的 socket 壓入內存隊列中,事件分派器根據 socket 上的事件來選的對應的事件處理器進行處理。

文件事件處理器的結構如下:

  • 多個 socket;
  • IO 多路復用;
  • 文件事件分派器;
  • 事件處理器(連接應答處理器、命令請求處理器、命令回復處理器)。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/81150.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/81150.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/81150.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

樹莓派智能攝像頭實戰指南:基于TensorFlow Lite的端到端AI部署

引言:嵌入式AI的革新力量 在物聯網與人工智能深度融合的今天,樹莓派這一信用卡大小的計算機正在成為邊緣計算的核心載體。本文將手把手教你打造一款基于TensorFlow Lite的低功耗智能監控設備,通過MobileNetV2模型實現實時物體檢測&#xff0…

vs2019編譯occ7.9.0時,出現fatal error C1060: compiler is out of heap space

問題描述 visual studio 2019編譯opencascade 7.9.0時,出現編譯錯誤 fatal error C1060: compiler is out of heap space 解決方案 修改vs2019并行編譯的線程個數,默認是12個,我改成了4個,問題解決 Tools > Project and Sol…

vue跨域問題總結筆記

目錄 一、Websocket跨域問題 1.nginx配置 2.VUE CLI代理 3.env.development配置 4.nginx日志 5.解決 一、解決跨域的幾種常用方法 1.Vue CLI代理 2.JSONP 3.WebSocket 4.NGINX解決跨域問題 6.Java解決跨域 二、Vue跨域問題詳解 1. 什么是跨域 2. 跨域的例子 3.…

數據結構篇:線性表的另一表達—鏈表之單鏈表(下篇)

目錄 1.前言 2.是否使用二級指針 3.插入/刪除 3.1 pos位置前/后插入 3.2 查找函數 3.3 pos位置刪除 3.4 pos位置后面刪除 3.5 函數的銷毀 4.斷言問題 4.1 斷言pphead 4.2 斷言*pphead 5.三個文件的代碼 5.1 頭文件 5.2 具體函數實現 5.3 測試用例 1.前言 之前是講…

完美解決react-native文件直傳阿里云oss問題一

前言 通常情況下,作為前后端分離的項目來說,文件上傳是最尋常的功能之一。雖然每個公司選擇的文件管理云庫各不相同,但實現思路基本一致。我所在公司使用阿里云oss文件管理,之前服務端做了透傳,但是由于每個測試環境的…

5.運輸層

5. 運輸層 1. 概述 第2~4章依次介紹了計算機網絡體系結構中的物理層、數據鏈路層和網絡層,它們共同解決了將主機通過異構網絡互聯起來所面臨的問題,實現了主機到主機的通信然而在計算機網絡中實際進行通信的真正實體,是位于通信兩端主機中的…

告別手動時代!物聯網軟件開發讓萬物自動互聯

清晨,智能窗簾隨著陽光自動拉開;運動時,手表精準記錄著健康數據;回到家,室溫早已調節至最舒適狀態...這些場景的實現,都離不開物聯網軟件開發的技術支撐。在智能家居軟件開發、智能穿戴軟件開發、醫療器械軟…

Fiori學習專題十二:Shell Control as Container

為了讓我們的app更加適應不同的設備&#xff0c;這節課我們引入shell控件作為根元素 1.修改App.view.xml&#xff0c;加入Shell控件 <mvc:ViewcontrollerName"ui5.walkthrough.controller.App"xmlns"sap.m"xmlns:mvc"sap.ui.core.mvc"displa…

AI 與高性能計算的深度融合:開啟科技新紀元

在當今科技迅猛發展的時代&#xff0c;人工智能&#xff08;AI&#xff09;與高性能計算&#xff08;HPC&#xff09;正以前所未有的態勢深度融合&#xff0c;這種融合宛如一場強大的風暴&#xff0c;席卷并重塑著眾多領域的格局。從科學研究的突破到商業應用的革新&#xff0c…

「Unity3D」TextMeshPro使用TMP_InputField實現,輸入框高度自動擴展與收縮

先看實現效果&#xff1a; 要實現這個效果&#xff0c;有三個方面的問題需要解決&#xff1a; 第一&#xff0c;輸入框的高度擴展&#xff0c;內部子元素會隨著錨點&#xff0c;拉伸變形——要解決這個問題&#xff0c;需要將內部元素改變父類&#xff0c;然后增加父類高度&am…

多模態大語言模型arxiv論文略讀(四十七)

AdaShield: Safeguarding Multimodal Large Language Models from Structure-based Attack via Adaptive Shield Prompting ?? 論文標題&#xff1a;AdaShield: Safeguarding Multimodal Large Language Models from Structure-based Attack via Adaptive Shield Prompting …

美的人形機器人即將投入實際應用

國內家電巨頭美的集團近日公布了其自主研發的人形機器人的具體落地計劃。根據公司披露的信息&#xff0c;這款機器人將于5月在湖北荊州的洗衣機工廠率先投入使用&#xff0c;承擔設備運維、質量檢測和物料搬運等工作任務。預計今年下半年&#xff0c;該機器人還將進入美的線下門…

從零開始搭建你的個人博客:使用 GitHub Pages 免費部署靜態網站

&#x1f310; 從零開始搭建你的個人博客&#xff1a;使用 GitHub Pages 免費部署靜態網站 在互聯網時代&#xff0c;擁有一個屬于自己的網站不僅是一種展示方式&#xff0c;更是一種技術能力的體現。今天我們將一步步學習如何通過 GitHub Pages 搭建一個免費的個人博客或簡歷…

canvas動畫:點隨機運動 距離內自動連接成線 鼠標移動自動吸附附近的點

思路/實現步驟 創建canvas元素 獲取canvas的上下文ctx 初始化點的信息&#xff08;數量、初始坐標、移動方向、移動速度、大小、顏色&#xff09; 繪制點 繪制點之間的連線 點有規律的動起來 動畫循環 鼠標移動相關邏輯 點鼠標之間連線 鼠標吸附邏輯 添加配置項 重繪…

2025年4月AI科技領域周報(4.21-4.27):大模型生態加速演進 通用AI開啟產業融合新范式

2025年4月AI科技領域周報&#xff08;4.21-4.27&#xff09;&#xff1a;大模型生態加速演進 通用AI開啟產業融合新范式 一、本周熱點回顧1. OpenAI發布全球首款通用AI芯片「GPT-NPU」 重塑AI算力架構2. 谷歌DeepMind發布醫療AI系統「Med-Pathfinder」 實現全科室智能診斷3. 微…

【Bash】可以請您解釋性地說明一下“2>1”這個語法嗎?

Qwen3-235B 當然可以&#xff01;我們一步步拆解 2>&1 的含義&#xff0c;用生活化的例子來理解它&#xff1a; &#x1f9e0; 前提知識&#xff1a;三個“水流通道” 在 Linux/Unix 系統中&#xff0c;程序運行時有三種默認的“水流通道”&#xff1a; 標準輸入&…

MAC如何安裝多版本jdk(以8,11,17為例)

MAC如何安裝多版本jdk(以8,11,17為例&#xff09;_mac安裝jdk17-CSDN博客

Nginx核心

一、概述 Nginx一個具有高性能的【HTTP】和【反向代理】的【WEB服務器】&#xff0c;同時也是一個電子郵件代理服務器。正向代理服務的是客戶端&#xff08;比如VPN&#xff09;&#xff0c;反向代理服務的是服務端。Nginx是多進程的&#xff0c;有一個Master進程控制多個Worke…

綜合開發-手機APP遠程控制PLC1500柱燈的亮滅

要通過 ??Unity3D?? 開發的手機 App 控制 ??電氣柜上面的柱燈&#xff0c;需要WIFI模塊作為橋梁&#xff0c;按照以下步驟實現&#xff1a; ??1. 硬件準備&#xff08;硬件部分&#xff09;?? ??所需材料?? ??ESP32開發板??&#xff08;如ESP32-WROOM-32&a…

五款提效工具

1. 億可達 核心功能&#xff1a;通過“觸發器動作”模式&#xff0c;實現任務自動執行&#xff08;如郵件轉發、評論回復、數據同步&#xff09;。 適用場景&#xff1a;自動同步Notion項目到滴答清單生成待辦事項 優勢&#xff1a;節省重復操作時間&#xff0c;減少人為錯誤&a…