Redis是多线程还是单线程?

【Redis】 - Redis 6.0 新特性之多线程模型 在执行命令阶段:Redis是单线程来执行命令的,每一条到达读服务端的命令并不会立即执行,所有的命令都会进入一个 socket 任务队列中,当 socket 可读则交给单线程事件分发器逐个被执行,即一个线程处理所有网络请求。如下图所示:从Redis 4.0 以后并不是严格意义上的单线程,除了主线程外,Redis 也有后台线程或子进程处理一些其他较为缓慢的操作(例如:无用连接的释放、慢IO访问和一些其他类似操作 - 清理脏数据、生成快照、AOF重写等)。 阅读详情

1、Redis 单线程到底指什么?

没错,大家所熟知的 Redis 确实是单线程模型,指的是执行 Redis 命令的核心模块是单线程的,而不是整个 Redis 实例就一个线程,Redis 其他模块还有各自模块的线程的。

下面这个解释比较好:
在这里插入图片描述Redis基于Reactor模式开发了网络事件处理器,这个处理器被称为文件事件处理器。它的组成结构为4部分:多个套接字、IO多路复用程序、文件事件分派器、事件处理器。因为文件事件分派器队列的消费是单线程的,所以Redis才叫单线程模型。

2、Redis 不仅仅是单线程

一般来说 Redis 的瓶颈并不在 CPU,而在内存和网络。如果要使用 CPU 多核,可以搭建多个 Redis 实例来解决。

其实,Redis 4.0 开始就有多线程的概念了,比如 Redis 通过多线程方式在后台删除对象、以及通过 Redis 模块实现的阻塞命令等。

Redis6.0 已经发布,在网络 IO 处理方面用上了多线程,如网络数据的读写和协议解析等,需要注意的是,执行命令的核心模块还是单线程的。

3、为什么网络处理要引入多线程?

Redis 的瓶颈并不在 CPU,而在内存和网络。

内存不够的话,可以加内存或者做数据结构优化和其他优化等,但网络的性能优化才是大头,网络 IO 的读写在 Redis 整个执行期间占用了大部分的 CPU 时间,如果把网络处理这部分做成多线程处理方式,那对整个 Redis 的性能会有很大的提升。

Redis 究竟是单线程还是多线程呢? Redis到底是单线程还是多线程的?首先,Redis是一个高性能的分布式缓存中间件。其复杂性不言而喻,对于Redis整体而言肯定不是只有一个线程。我们常说的Redis 是单线程,主要是指 Redis 在网络 IO和键值对读写是采用一个线程来完成的,这也是 Redis 对外提供键值存储服务的核心流程。但对于 Redis 的其他功能来说,比如持久化、异步删除、集群数据同步等,其实都是由额外的线程执行的。单线程的优势:单线程的劣势:基于上诉劣势,Redis也进行了相关优化,在4.0版本和6.0版本分别引入了Laz 阅读详情

相关推荐

Redis高阶篇之Redis单线程与多线程

之前写过关于Redis的十篇文章,关于Redis快的原因是单线程执行指令和IO多路复用比较笼统,所以打算单开一篇文章深入介绍Redis单线程与多线程。以及Redis不同版本的多线程和IO多路复用情况。Redis自身出道就是优秀,基于内存操作、数据结构简单、多路复用和非阻塞I/O、避免了不必要的线程上下文切换等特性,在单线程的环境下依然很快;

qq_39126115的博客 1759

redis 6.0之多线程,深入解读

前言 一般来说,一个 redis 请求有两大模块,网络模块 + 命令处理模块。我们常说的 redis 单线程模型,其实主要就是值的一个正常请求涉及的网络模块和命令处理模块。当然,两者都有可能出现问题,我们分别来看看: 当一个执行一个特别慢的命令时,比如删除一个百万级的字典,可能会造成暂时的卡.

持之以恒 1万+

Redis高级之单线程和多线程

Redis高级之单线程和多线程

qq_55846232的博客 1902

redis 7高级篇1 redis的单线程与多线程

1.redis6.x之前网络IO和命令执行都是有一个主线程进行操作完成;但是单线程存在删除del key存储卡顿阻塞问题,redis6.x之后使用IO多路复用技术,一个线程处理多个客户端请求,网络IO的读写,解析部分使用多线程,而命令执行部分仍使用一个主线程执行,这样提供了查询效率,同时解决了删除del key卡顿问题。2.redis基于Io多路复用和epoll函数,减少上下文切换,同时基于内存和数据结构简单 这些是redis查询块的原因单个进程能够实现处理多个客户端的连接请求。

健康平安的活着的专栏 5091

TI AWR2944毫米波雷达开发板开箱:用官方Demo快速上手3D点云与热图生成

本文详细介绍了TI AWR2944毫米波雷达开发板的开箱与实战应用,包括硬件准备、软件开发环境搭建、Demo固件刷写与配置、实时可视化与数据解析等全流程指南。通过官方Demo快速上手3D点云与热图生成,帮助开发者高效掌握毫米波雷达技术在工业检测、智能交通等领域的应用。

weixin_42627853的博客 308

ch32v103xx 烧写

烧写方式 串口uart, usb,swd(wch link)但不建议按此使用,参官方说明。

qq_39239990的博客 637

【Redis】Redis单线程和多线程

Redis的单线程主要是指Redis网络IO和键值对读写是由一个线程来完成的,Redis在处理客户端的请求时包括获取(Socket读)、解析、执行、内容返回(Socket写)等都是由一个顺序串行的主线程处理,这时Redis对外提供键值对存储服务的主要流程。Redis其他功能,比如持久化RDB、AOF、异步删除、集群数据同步等,是由额外的线程执行的。Redis命令的工作线程是单线程的,但是对于整个Redis来说,是多线程。

kuangd_1992的博客 3697

脑机接口最新发展动态报告 (2024-2025)

脑机接口动态

高山 4105

redis是单线程还是多线程

Redis 的核心是单线程模型,但从 Redis 6.0 开始,通过多线程支持优化了网络 I/O。单线程模型适合绝大部分场景,能够简化代码实现并提高内存操作的效率。多线程优化的场景主要体现在高并发和大数据传输上。

Flying_Fish_roe的博客 1023

交通银行金融科技后端开发实习生面试经验

笔试之路的第一个脚印。不足的地方:基本功不扎实,得补。先补sql(先整理出一篇sql语句做题的文章,争取下次笔试拿下这一块),编程题中的SQL写不出来感觉很丢人。然后补八股文,结合一些网上项目教程,来理解常用的一些八股文(比如各种锁)。

T__TSZ的博客 1720

SpringBoot实现快速导入EXCEL

MaterialMonitorController.java @Log(title = "物料监测", businessType = BusinessType.IMPORT) @RequiresPermissions("system:materialMonitor:import") @PostMapping("/importData") @ResponseBody ...

LEN程序员的一生 4817

Redis单线程 VS 多线程

主要是指Redis的网络IO的键值对读写是由一个线程来完成的,Redis在处理客户端的请求时包括获取(socket 读)、解析执行内容返回(socket 写)等都由一个顺序串行的主线程处理,这就是所谓的“单线程”。这也是 Redis对外提供键值存储服务的主要流程。但是Redis的其他功能,比如持久化RDB、AOF、异步删除、集群数据同步等,其实是由额外的线程执行。Redis命令工作线程是单线程的,但是,整个Redis来说是多线程的。

weixin_52834606的博客 2058

基于Simulink的MIMO-OFDM系统仿真建模示例

MIMO概述MIMO技术利用多个天线进行信号发送和接收,通过空间复用来提高数据传输速率,或通过空间分集来增强信号的可靠性。OFDM概述OFDM是一种将高速率数据流分成多个低速数据流并行传输的技术,每个子载波都采用调制方式(如BPSK、QPSK),并通过IFFT/FFT变换实现串并转换。MIMO-OFDM优势结合了MIMO的空间分集增益与OFDM对抗多径效应的能力,适用于宽带无线通信系统。提供了更高的数据速率和更好的频谱效率,是现代无线通信标准(如4G LTE、5G NR等)的核心技术之一。

xiaoheshang_123的博客 327

Redis单线程和多线程

此时的socket应该采用非阻塞模式。这样,整个过程只有在调用select、poll、epoll这些调用的时候才会阻塞,收发客户信息是不会阻塞的,整个进程或者线程就被充分利用起来。在目前的单线程Reactor模式中,不仅I/O操作在该Reactor线程上,连非I/O的业务操作也在该线程上进行处理了,这可能会大大延迟I/O请求的响应。是由一个线程完成的,Redis在处理客户端的请求时包括获取(Socket读)、解析、执行、内容返回(Socket写)等都由一个顺序串行的主线程处理,这就是所谓的“单线程”。

m0_45164511的博客 2399

9.6华为OD机试真题 新系统【仓储货物有序出库】

华为OD机试真题 新系统【仓储货物有序出库】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题 【仓储货物有序出库】多语言题解。

qq_45776114的博客 877

程序化广告ADX系统架构设计与实现

摘要: 本文详细介绍了程序化广告交易平台(ADX)的系统架构设计与实现。ADX作为连接广告主与媒体的核心平台,采用基于腾讯云和阿里云的微服务架构,包含网络基础设施、负载均衡、消息处理、核心业务服务和多级数据存储等层次。重点解析了Kafka消息队列处理高并发广告请求、Redis实时统计关键指标等核心技术实现,并提供了Java代码示例展示广告请求处理、竞价流程等核心功能。该系统通过分层设计和分布式组件,实现了高性能、高可用的程序化广告交易能力。

私聊前往站内信:https://i.youkuaiyun.com/#/msg/chat/weixin_44976692 765

Redis到底是多线程还是单线程

Redis线程模型经历三个阶段:单线程模型(4.0前)通过I/O多路复用实现高效处理;4.0引入后台任务多线程;6.0实现I/O多线程化但保持命令执行单线程,确保线程安全。相比Memcached,Redis支持更丰富数据类型、持久化和更大value存储。性能优化建议包括主库避免持久化、合理配置回收策略等。Redis采用I/O多路复用模型,6.0后网络I/O多线程处理而命令执行仍单线程,保证原子性和线程安全。Redis通过核心单线程+外围多线程的混合模型,在保持简单性的同时提升性能。

用学习探索人生的更多可能 708

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Redis单线程还是多线程?

redis单线程还是多线程?

个人学习,如有不当,望指正,万分感谢! 568

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Redis 是属于多线程还是单线程?

不同版本的Redis是不同的,在Redis4.0之前,Redis是单线程运行的,但单线程并不代表效率低,像Nginx、Nodejs也是单线程程序,但是它们的效率并不低。 原因是Redis是基于内存的,它的瓶颈在于机器的内存、网络带宽,而不是CPU,在CPU还没达到瓶颈时机器内存可能就满了、或者带宽达到瓶颈了。因此CPU不是主要原因,那么自然就采用单线程了,况且使用多线程比较麻烦。 但是在Redis4.0的时候,已经开始支持多线程了,比如后台删除等功能。 简单来说,Redis在4.0之前使用单线程的模式

sanmi8276的博客 634

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Redis是单线程还是多线程

我们平时看到介绍 Redis 的文章,都会说 Redis 是单线程的。但是我们学习的时候,比如 Redis 的 bgsave 命令,它的作用是在后台异步保存当前数据库的数据到磁盘,那既然是异步了,肯定是由别的线程去完成的,这怎么还能说 Redis 是单线程的呢? 其实通常说的 Redis 是单线程,主要是指 Redis 对外提供键值存储服务的主要流程,即网络 IO 和键值对读写是由⼀个线程来完成的。除此外 Redis 的其他功能,比如持久化、 异步删除、集群数据同步等,是由额外的线程执⾏的。在这一点上 N

YL的专栏 2859

Redis高级|Redis单线程VS多线程(基础)

Redis高级|Redis单线程VS多线程(基础)

无限进步 1014

Redis高阶1-单线程与多线程

​ 在Redis6/7中,非常受关注的第一个新特性就是多线程。这是因为,Redis一直被大家熟知的就是它的单线程架构,虽然有些命令操作可以用后台线程或子进程执行(比如数据删除、快照生成、AOF重写)。但是,从网络IO处理到实际的读写命令处理,都是由单个线程完成的。

sdrfghb的博客 877

Redis到底是单线程还是多线程?

大家好我是wyRain 今天来聊一下Redis是单线程还是多线程最近离职了所以就有空可以沉淀一下自己的Redis内容 多发点高质量文章先说结论:核心处理逻辑、Redis一直都是单线程的、其它辅助模块也会有一些多线程、多进程的功能比如:复制模块用的多进程、某些异步流程从4.O开始用的多线程、例如UNLINK、FLUSHALL ASYNC、FLUSHDB ASYNC 等非阻塞的删除操作。

wy990880的博客 1112

Redis 到底是单线程还是多线程呢?

Redis是高性能分布式缓存常用中间件,我们经常说Redis是单线程的,也有人说Redis在6.0版本采用了多线程,那么Redis到底是采用单线程呢?还是多线程?

码农札记 1681

redis之单线程和多线程

1、redis的发展史 2、redis为什么选择单线程? 3、主线程和Io线程是怎么协作完成请求处理的? 4、IO多路复用 5、开启redis多线程

qi341500的博客 1975

Redis究竟是单线程还是多线程?

​Redis是单线程的,在以前那就是真理,现在再说这句话,估计得有人来跟咱好好聊聊了。索性咱就来看看Redis到底是啥样呢? ⼀、Reactor模式(反应器模式) 1、传统阻塞IO模型 聊反应器模式前,我们先看⼀下传统阻塞IO模型的处理⽅式。 在传统阻塞IO模型中,由⼀个独⽴的Acceptor线程来监听客户端的连接,当有客户端请求过来时,它会为客户端分配⼀个新的线程来进行处理,当同时有多个请求过来,服务端对应的就会分配相应数量的线程,这样一来就会导致CPU频繁进行上下文切换操作,从而导致资源

luyaran的博客 951
上一篇: try-with-resources语法
下一篇: redis分布式锁
MrMoving
博客等级 码龄10年 54粉丝 145原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值