Redis作为单线程模型,为什么效率高、速度快呢?

前言:
效率高、速度快是相较于数据库来说的(MySQL、Orcale、SQL server)

文章目录

  • 一、单线程模式的工作流程
  • 二、为什么快?

一、单线程模式的工作流程

这里我们所说的单线程是指:Redis只使用一个线程,来处理所有的命令请求。而并不是说Redis服务器进程内部就真的只有一个进程。Redis内部其实也有多个线程,但那多个线程是在处理 网络IO

在这里插入图片描述
当前这样两个客户端,相当于“并发”的发起了上述请求,但Redis服务器实际上是单线程模型,保证了当前受到的请求是串行执行的。
在这里插入图片描述
那么为什么Redis使用单线程模型,处理业务还是这么快?
这主要取决于Reids的核心业务逻辑,Redis的核心业务逻辑都是短平快,不太消耗CPU资源,也就不太依靠核心数。
弊端
使用Redis必须小心,避免某个操作占用时间长,就会阻塞其他命令的执行。

二、为什么快?

效率高、速度快是相较于数据库来说的(MySQL、Orcale、SQL server)

  1. Redis访问内存,数据库则是访问硬盘。 这两个的速度可能会差上几个数量级。
  2. Redis的核心功能更简单。
    数据库对于数据的插入删除查询,都有更复杂的功能。(例如针对插入删除,数据库中的各种约束,都会使数据库做额外的工作)这样的功能势必会造成更多的开销
    当然消耗多就达标干的活多,这也就是为什么MySQL支持的功能要比Redis多。
  3. Redis是单线程模型,避免了一些不必要的线程竞争开销
    Redis的每个基本操作,都是短平快,只是简单操作一下内存数据,不会产生大的内存CPU开销,即使多个线程,那提升也不大。
  4. 处理网络IO时,使用了epoll这样的IO多路复用机制。
    一个线程可以管理一个socket,针对TCP来说,服务器这每服务一个客户端,就需要为这个客户端安排一个socket。那么一个服务器服务多个客户端,同时就有很多socket。但这些socket并不是无时无刻都在传输数据。大多数socket大多数时间都在静默。
    那么为一个socket分配一个线程,就显得有些浪费了。
    基于上述原因,就出现了IO多路复用–即一个线程管理多个socket

以上就是本文所有内容,如果对你有帮助的话,点赞收藏支持一下吧!💞💞💞

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/146222.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

从零到一:打造安全高效敦煌测评自养号体系

敦煌测评自养号是一种提升店铺销售和排名的有效策略,卖家可以自行注册并管理买家账号,通过模拟真实买家行为为自家店铺进行测评和补单。以下是一些关键技巧,帮助卖家快速提升销售和排名: 一、账号注册与养号 环境搭建&#xff1…

prober found high clock drift,Linux服务器时间不能自动同步,导致服务器时间漂移解决办法。

文章目录 一、场景二、问题三、解决办法(一)给服务器添加访问网络能力(二)手动同步1. 检查有没有安装ntp2. 没有安装ntp则离线安装ntp2.1 下载安装包2.2 安装2.3 启动 ntp 3. 设置内部时钟源3.1 编辑/etc/ntp.conf3.1 重启ntp服务…

【vmware】vmware中手动安装vmwaretools

问题: vmware中点击安装vmwaretools时出现如下: VMware Tools 不再随旧版客户机操作系统的 VMware Workstation 一起提供。 请从 https://packages-prod.broadcom.com/tools/frozen/windows/winPreVista.iso 下载,并参阅 https://knowledge.broadcom.co…

海外大带宽服务器连接失败怎么办?

在全球化日益加深的今天,海外大带宽服务器已成为企业拓展国际市场、提升业务效率的重要工具。然而,面对复杂多变的网络环境和技术挑战,服务器连接失败的问题时有发生,这不仅影响了企业的正常运营,还可能带来经济损失和…

VM虚拟机使用的镜像文件下载

文章目录 Windows系统进入微软官网下载工具以Windows10为例下载镜像文件 Windows系统 进入微软官网下载工具 微软中国官网:https://www.microsoft.com/zh-cn/ 以Windows10为例下载镜像文件 选择下载的路径 开始下载 安装windows10操作系统出现Time out问题及解决办…

WPF DataGrid 动态修改某一个单元格的样式

WPF DataGrid 动态修改某一个单元格的样式 <DataGrid Name"main_datagrid_display" Width"1267" Height"193" Grid.Column"1"ItemsSource"{Binding DataGridModels}"><DataGrid.Columns><!--ElementStyle 设…

得物自建 Redis 无人值守资源均衡调度设计与实现

目录&#xff1a; 一、为什么要做资源均衡调度 二、为什么要做自动化资源均衡调度 三、如何合理选择迁移节点 四、如何保障迁移过程中可靠性1. 添加从节点2. 检查同步数据正常3. 执行主从切换4. 检查主从切换正常5. 删除待迁移节点6. 消息通知 五、迁移任务管理展示 六、总结 …

酸枣病虫害智能化防控系统的探索与实践,基于YOLOv5全系列【n/s/m/l/x】参数模型开发构建枣类作物种植场景下酸枣病虫害智能检测识别系统

智慧农业&#xff0c;作为现代农业的高级形态&#xff0c;通过集成物联网、大数据、人工智能等先进技术&#xff0c;实现了农业生产过程的精准化、智能化管理。在酸枣等经济作物的种植过程中&#xff0c;病虫害的及时监测与防控直接关系到作物的产量与质量&#xff0c;进而影响…

LD3320语音识别模块的简单应用

文章目录 一、 前言二、硬件1.原理图2.产品参数 三、软件1.语音识别原理2.用户使用模式2.1 触发识别模式2.2 循环识别模式 3.语音识别程序3.1 并行方式读写3.2 初始化3.3 写入识别列表3.4 开始识别3.5 响应中断 4.烧写程序4.1 硬件连接4.2 打开STC-ISP软件4.3 按要求配置软件4.…

F28335中断系统

1 中断介绍 1.1 中断概念 1.2 TMS320F28335 中断概述

Python 中的 typing 模块常见用法

typing 模块是 Python 提供的一个标准库&#xff0c;主要用于为函数、变量和类定义类型提示&#xff08;Type Hints&#xff09;&#xff0c;从而提高代码的可读性和类型安全性。虽然 Python 是动态类型语言&#xff0c;但通过 typing 模块&#xff0c;开发者可以明确指定变量和…

【Git 操作】Git 的基本操作

文章目录 1. Git 的配置2. 工作区、暂存区、版本库 1. Git 的配置 &#x1f427;①首先要新建一个目录&#xff0c;该目录用于放项目代码&#xff0c;在该目录下执行git init命令&#xff0c;用于创建一个 Git的本地仓库。 .git ⽬录是 Git 来跟踪管理仓库的。&#x1f427;②…

【script】java武魂技展示:在java中使用不同的脚本语言 一文体现java生态的强大

我们经常听到java强大在于它的生态&#xff0c;对于生态的理解我们一般可能想到的是spring家族、微服务那一套中间件&#xff1b;其实java生态的强大也体现在它能使用各种脚本语言&#xff0c;博主最近在项目中考虑使用脚本语言以达到动态效果&#xff0c;因此顺带例举了常用的…

prometheus通过nginx-vts-exporter监控nginx

Prometheus监控nginx有两种方式。 一种是通过nginx-exporter监控&#xff0c;需要开启nginx_stub_status,主要是nginx自身的status信息&#xff0c;metrics数据相对较少&#xff1b; 另一种是使用nginx-vts-exporter监控&#xff0c;但是需要在编译nginx的时候添加nginx-module…

Vuex 入门与实战

引言 Vuex 是 Vue.js 官方推荐的状态管理库&#xff0c;它可以帮助我们更好地管理 Vue 应用的状态。在大型应用中&#xff0c;组件之间的状态共享和通信是一个非常重要的问题&#xff0c;而 Vuex 提供了一种优雅的解决方案。 在 Vue 应用中&#xff0c;数据的流动一般是单向的…

Android Perfetto 学习

1、如何抓取性能日志 方式1、通过手机里的System Tracing抓取 1、点击Settings->System->Developer options->System Tracing->Record trace 打开 2、操作完成后&#xff0c;点击Settings->System->Developer options->System Tracing->Record trace…

初始泛型【超级详细哦~】

初始泛型【超级详细哦~】 1、包装类1.1 基本数据类型和对应的包装类1.2 装箱和拆箱1.3 自动装箱和拆箱 2、泛型2.1 什么是泛型2.2 泛型的语法2.3泛型的使用2.4 泛型的上界2.4.1 语法2.4.2 示例 1、包装类 1.1 基本数据类型和对应的包装类 1.2 装箱和拆箱 int i10;//装箱操作&a…

PCL 点云圆柱邻域搜索

目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.2完整代码 三、实现效果 PCL点云算法汇总及实战案例汇总的目录地址链接&#xff1a; PCL点云算法与项目实战案例汇总&#xff08;长期更新&#xff09; 一、概述 本文将介绍如何使用PCL库进…

【白皮书下载】分布式功能安全的创新与突破

近日&#xff0c;Imagination 推出全新性能最高且具有高等级功能安全性的汽车 GPU IP——Imagination DXS GPU&#xff0c;并且是Imagination 第一款带有“分布式安全机制”的处理器。 下载白皮书&#xff0c;获取完整分布式安全机制解决方案 根据 ISO 26262 汽车安全完整性等级…

11.1图像的腐蚀和膨胀

基本概念-图像腐蚀 图像腐蚀是一种用于去除图像中小的对象或者突出物体边缘的形态学操作。 图像腐蚀&#xff08;erosion&#xff09;的基本概念 图像腐蚀通常用于二值图像&#xff0c;其基本原理是从图像中“侵蚀”掉一些像素点&#xff0c;这些像素点通常是边界上的或者是孤…