Redis之單線程與多線程

redis 單線程與多線程

在這里插入圖片描述

Redis是單線程,主要是指Redis的網絡IO和鍵值對讀寫是由一個線程來完成的,Redis在處理客戶端的請求時包含獲取(socket讀)、解析、執行、內容返回(socket寫)等都由一個順序串行的主線程處理,這就是所謂的“單線程”。這也是redis對外提供鍵值存儲服務的主要流程。
在這里插入圖片描述

但Redis的其他功能,比如持久化RDB、AOF、異步刪除、集群數據同步等等,其實是由額外的線程執行的。Redis命令工作線程是單線程的,但是,整個Redis來說,是多線程的
Redis 3.X單線程時代但性能依舊很快的原因?
在這里插入圖片描述
官網解釋
在這里插入圖片描述
Redis4之前一直使用單線程的原因
在這里插入圖片描述

Redis單線程的煩惱??

使用惰性刪除可以有效的避免redis卡頓的問題

在這里插入圖片描述

對于Reids主要的性能瓶頸是內存或者網絡帶寬而非CPU
在這里插入圖片描述
redis6與7 真正的多線程登場
在這里插入圖片描述
主線程和IO線程是怎么協作完成請求處理的?
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
Unix網絡編程中的5種IO模型
在這里插入圖片描述
Linux世界一切皆文件
文件描述符
在這里插入圖片描述
I/O 多路復用
一種同步的IO模型,實現一個線程監視多個文件句柄一旦某個文件句柄就緒就能夠通知到對應應用程序進行相應的讀寫操作,沒有文件句柄就緒時就會阻塞應用程序,從而釋放CPU資源。
在這里插入圖片描述
在這里插入圖片描述
I/O 多路復用場景分析

在這里插入圖片描述
I/O多路復用簡易理解
在這里插入圖片描述
只使用一個服務端進程可以同時處理多個套接字描述符連接
在這里插入圖片描述
Redis為什么這樣快?
I/O多路復用1+epoll函數使用,才是redis為什么這么快的直接原因,而不是僅僅單線程指令+redis安裝在內存中。
簡單說明
Redis工作線程是單線程的,但是整個Redis來說,是多線程的

主線程和IO線程是怎么協作完成請求處理的?
在這里插入圖片描述
在這里插入圖片描述
結論
在這里插入圖片描述
Redis7默認是否開啟了多線程?
如果你在實際應用中,發現Redis實例的CPU開銷不大但吞吐量卻沒有提升,可以考慮使用Redis7的多線程機制,加速網絡處理,進而提升實例的吞吐量。

在這里插入圖片描述
在這里插入圖片描述
總結
在這里插入圖片描述

視頻鏈接–學習地址
Redis 單線程與多線程

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

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

相關文章

C#的簡單工廠模式、工廠方法模式、抽象工廠模式

工廠模式是一種創建型設計模式,主要將對象的創建和使用分離,使得系統更加靈活和可維護。常見的工廠模式有簡單工廠模式、工廠方法模式和抽象工廠模式,以下是 C# 實現的三個案例: 簡單工廠模式 簡單工廠模式通過一個工廠類來創建…

python基礎8 單元測試

通過前面的7個章節,作者學習了python的各項基礎知識,也學習了python的編譯和執行。但在實際環境上,我們需要驗證我們的代碼功能符合我們的設計預期,所以需要結合python的單元測試類,編寫單元測試代碼。 Python有一個內…

算法刷題力扣

先把大寫的字母變成小寫的&#xff0c;用大寫字母32即可變為小寫字母。 寫循環跳過字符。 然后判斷是否相等即可。具體代碼如下&#xff1a; class Solution { public: bool isPalindrome(string s) { int sizes.size(); int begin0; int ends.size()-1; for(int i0;i<s…

allure下載安裝及配置

這里寫目錄標題 一、JDK下載安裝及配置二、allure下載三、allure安裝四、allure環境變量配置五、allure驗證是否安裝成功 一、JDK下載安裝及配置 allure 是一個java測試報告框架。所以要基于JDK環境。 JDK下載與安裝及配置&#xff1a;https://blog.csdn.net/qq_24741027/arti…

linux之 內存管理(1)-armv8 內核啟動頁表建立過程

一、內核啟動時&#xff0c;頁表映射有哪些&#xff1f; Linux初始化過程&#xff0c;會依次建立如下頁表映射&#xff1a; 1.恒等映射&#xff1a;頁表基地址idmap_pg_dir; 2.粗粒度內核鏡像映射&#xff1a;頁表基地址init_pg_dir; 3.fixmap映射&#xff1a;頁表基地址為…

【面試問題】Java 接口與抽象類的區別

引言 在 Java 面向對象編程中&#xff0c;接口&#xff08;Interface&#xff09;和抽象類&#xff08;Abstract Class&#xff09;是兩個重要的抽象工具。它們都能定義未實現的方法&#xff0c;但設計目標和使用場景截然不同。本文將通過語法、特性和實際案例&#xff0c;深入…

【資料分享】全志科技T113-i全國產(1.2GHz雙核A7 RISC-V)工業核心板規格書

核心板簡介 創龍科技SOM-TLT113 是一款基于全志科技T113-i 雙核ARM Cortex-A7 玄鐵C906 RISC-V HiFi4 DSP 異構多核處理器設計的全國產工業核心板&#xff0c;ARM Cortex-A7 處理單元主頻高達1.2GHz。核心板 CPU、ROM、RAM、電源、晶振等所有元器件均采用國產工業級方案&…

R語言高效數據處理-自定義格式EXCEL數據輸出

注&#xff1a;以下代碼均為實際數據處理中的筆記摘錄&#xff0c;所以很零散&#xff0c; 將就看吧&#xff0c;這一篇只是代表著我還在&#xff0c;所以可能用處不大&#xff0c;這一段時間都很煎熬&#xff01; 在實際數據處理中為了提升效率&#xff0c;將Excel報表交付給…

LeetCode 30 —— 30.串聯所有單詞的子串

題目&#xff1a; 給定一個字符串 s 和一些長度相同的單詞 words。找出 s 中恰好可以由 words 中所有單詞串聯形成的子串的起始位置。 注意子串要與 words 中的單詞完全匹配&#xff0c;中間不能有其他字符&#xff0c;但不需要考慮 words 中單詞串聯的順序。 示例 1&#xff…

《算法筆記》9.2小節——數據結構專題(2)->二叉樹的遍歷 問題 A: 復原二叉樹(同問題 C: 二叉樹遍歷)

題目描述 小明在做數據結構的作業&#xff0c;其中一題是給你一棵二叉樹的前序遍歷和中序遍歷結果&#xff0c;要求你寫出這棵二叉樹的后序遍歷結果。 輸入 輸入包含多組測試數據。每組輸入包含兩個字符串&#xff0c;分別表示二叉樹的前序遍歷和中序遍歷結果。每個字符串由…

SpringBoot-2整合MyBatis以及基本的使用方法

目錄 1.引入依賴 2.數據庫表的創建 3.數據源的配置 4.編寫pojo類 5.編寫controller類 6.編寫接口 7.編寫接口的實現類 8.編寫mapper 1.引入依賴 在pom.xml引入依賴 <!-- mysql--><dependency><groupId>com.mysql</groupId><artifac…

Unity Shader Graph高級節點邏輯設計:程序化噪聲生成技術詳解

一、程序化噪聲的核心價值 程序化噪聲生成是Shader開發中的關鍵核心技術&#xff0c;通過數學算法直接生成紋理信息&#xff0c;相較于傳統位圖紋理具有以下優勢&#xff1a; 無限分辨率&#xff1a;可動態適應任意顯示精度 參數化控制&#xff1a;實時調整噪聲頻率、振幅等屬…

[藍橋杯 2023 省 B] 飛機降落(不會dfs的看過來)

[藍橋杯 2023 省 B] 飛機降落 題目描述 N N N 架飛機準備降落到某個只有一條跑道的機場。其中第 i i i 架飛機在 T i T_{i} Ti? 時刻到達機場上空&#xff0c;到達時它的剩余油料還可以繼續盤旋 D i D_{i} Di? 個單位時間&#xff0c;即它最早可以于 T i T_{i} Ti? 時刻…

英偉達GTC 2025大會產品全景剖析與未來路線深度洞察分析

【完整版】3月19日&#xff0c;黃仁勛Nvidia GTC 2025 主題演講&#xff5c;英偉達 英偉達GTC 2025大會產品全景剖析與未來路線深度洞察分析 一、引言 1.1 分析內容 本研究主要采用了文獻研究法、數據分析以及專家觀點引用相結合的方法。在文獻研究方面&#xff0c;廣泛收集了…

強化學習 - PPO控制無人機

PPO&#xff08;Proximal Policy Optimization&#xff0c;近端策略優化&#xff09;是一種強化學習算法&#xff0c;用于訓練智能體&#xff08;無人機&#xff09;如何在環境中做出決策。它本質上是 策略梯度&#xff08;Policy Gradient&#xff09;方法 的一種改進&#xf…

YOLO11報錯:AttributeError: module ‘torch‘ has no attribute ‘OutOfMemoryError‘

事情是這樣的&#xff1a;前幾天YOLO11的代碼還是可以訓練的&#xff0c;昨天訓練了一天&#xff0c;今天換模型就報這個錯。 AttributeError: module torch has no attribute OutOfMemoryError我查了一下&#xff1a;YOLO11官方代碼issues里面也有人有同樣的問題&#xff0c;…

Prometheus使用

介紹&#xff1a;Prometheus 是一個開源的 監控與告警系統&#xff0c;主要用于采集和存儲時間序列數據&#xff08;Time Series Data&#xff09; Prometheus的自定義查詢語言PromQL Metric類型 為了能夠幫助用戶理解和區分這些不同監控指標之間的差異&#xff0c;Prometheu…

ESG報告評級標準解讀

ESG&#xff08;環境、社會、治理&#xff09;報告評級標準用于評估企業在環境、社會和公司治理方面的表現。以下是主要評級標準的解讀&#xff1a; 1. 環境&#xff08;Environmental&#xff09; 碳排放&#xff1a;評估企業的溫室氣體排放及減排措施。 能源使用&#xff1…

清晰易懂的 PHP 安裝與配置教程

初學者也能看懂的 PHP 安裝與配置教程 本教程將手把手教你如何在 Windows 系統上安裝 PHP&#xff0c;并配置 Composer&#xff08;PHP 的依賴管理工具&#xff09;的緩存位置&#xff0c;即使你是零基礎小白&#xff0c;也能輕松完成&#xff01; 一、準備工作 操作系統&…

Zabbix監控自動化(Zabbix Mnitoring Automation)

??????zabbix監控自動化 1、自動化監控(網絡發現與自動注冊只能用其一) 1.1 ansible安裝zabbix agent 新采購100臺服務器&#xff1a; 1、安裝操作系統 2、初始化操作系統 3、安裝zabbix agent 1.手動部暑 2.腳本部暑(shell expect) 3.ansible 4、納入監控 1.…