面试官:为什么 Redis 6.0 之后引入多线程?

news2024/9/21 12:25:55

大家好,我是大明哥,一个专注「死磕 Java」系列创作的硬核程序员。

回答

Redis 的性能瓶颈从来都不是 CPU,是网络I/O 和内存。

内存好解决,加机器内存和优化数据结构。

网路 I/O 的优化才是大头,因为读写网络的 read/write 系统调用占用了Redis执行期间大部分CPU时间,如果能够将这部分多线程化,则会大大提高 Redis 的性能。

故而,Redis 6.0 引入 I/O 多线程模型,但是它只对网络的部分采用了多线程,数据的读写依然是单线程。

总结就是:将主线程 IO 读写任务拆分出来给一组独立的线程处理,使得多个 socket 读写可以并行化,但是 Redis 命令还是主线程串行执行。

扩展

根据测算,Redis 将所有数据放在内存中,内存的响应时长大约为 100 纳秒,对于小数据包,Redis 服务器可以处理 80,000 到 100,000 QPS,这么高的对于 80% 的公司来说,单线程的 Redis 已经足够使用了。

但是,随着越来越复杂的业务场景,有些公司动不动就上亿的交易量,因此需要更大的 QPS。经过分析 Redis 的性能瓶颈主要体现在网络 IO 的处理上。所以 Redis 引入多线程来优化网络 I/O 的处理。

客户端发送一条请求给 Redis 后,Redis 的处理过程分为四个步骤:读取请求、解析请求、数据读写、响应写回,在 Redis 6.0 之前这个过程统一由主线程处理,Redis 6.0 多线程后,处理过程如下:

所以,Redis 6.0 引入的多线程只⽤来处理处理网络数据的读写和协议解析,而数据读写依然采用由主线程来处理,主要原因大明哥认为有如下几个:

  1. 数据读写为纯内存操作,速度极快,不是性能瓶颈所在。
  2. 如果使用多线程来处理数据读写,则需要多线程的数据安全机制,使得模型变得更加复杂,难以维护。
  3. 多线程带来的资源竞争和上下文切换的消耗会得不偿失。

本文已收录到我的技术网站:https://www.skjava.com。有全网最优质的系列文章、Java 全栈技术文档以及大厂完整面经

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

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

相关文章

最新大厂薪资职级表,我酸了。。

大家好!我是鸭鸭! 又到周末,让我们轻松一下,来吃吃瓜! 大厂往往会提供具有竞争力的薪资和福利待遇,正值秋招,相关热帖也是又被翻了出来。鸭鸭今天就刷到一个帖子,据说是几家互联网…

基于构件开发-系统架构师(六十四)

1()常见的功能包括版本控制,变更管理,配置状态管理,访问控制和安全控制等。 A软件测试工具 B版本控制工具 C软件维护工具 D软件配置管理工具 解析: 软件过程工具分为:软件开发工具&#xf…

史上最全-经管类国家社科基金立项名单汇总 1991-2024

数据说明:本次数据包括以下内容: 1.国家自科基金立项名单(2022-2024) 2.国家社科基金立项名单(2008-2018) 数据简介:国家自然科学基金是中国支持基础研究的主渠道之一,面向全国&am…

容易中、见刊快的6本医学期刊推荐!

常笑医学整理了6本容易中、见刊快的医学期刊,以及期刊详细参数与投稿经验,供医生、医学生们在论文投稿时参考。投稿经历均来自常笑医学网用户真实分享,欢迎大家到常笑医学网分享自己的投稿经历和实用经验。 1.《中国医药科学》 (详…

两个月冲刺软考——校验码的三种类型;编译过程;翻译器与解释器的对比;补充CPU的内容

1.校验码 是通过扩大码距从而实现校验的。 那什么是码距呢?任何一种编码都由许多码字组成的,任意两个码字之间最少变化的二进制位数就称为数据校验码的码距。 对于这个概念可以这样理解:想象一个地图上的城市网络,每个城市代表一…

STM32时钟配置图详解

一图概述: 左侧输入时钟源 Input Frequency (LSE/LSI/HSI/HSE) LSE (Low-Speed External):外部32.768 kHz晶体振荡器,通常用于RTC(实时时钟)。LSI (Low-Speed Internal):内部低速时钟,频率为…

C# 混淆加密大师1.2.5更新功能介绍, 附CSDN下载链接

C#混淆加密大师支持 .Net Framework 2.0到.Net Framework 4.x,以及.NET Core 2.0至最新的.NET 8版本的C#程序, 包括Winform、WPF、Unity游戏以及控制台程序的混淆加密, 可有效保护C#程序代码,防止非法复制或篡改, 保护知识产权. 特性 1. 支持多种不同的…

虚拟机苹果系统的QT安装体验

前言 苹果系统MacOS中除了安装XCode,完全可以安装QT。本质上来讲,苹果系统就是Linux改装版本,实际上和Ubuntu非常的接近。 1、Mac对应的QT安装包的下载 安装参考链接:MacOS下Qt 5开发环境安装与配置_macos qt-CSDN博客 苹果系统…

宠物空气净化器测评:霍尼韦尔、希喂、米家、有哈、范罗士哪款吸浮毛效果好

作为一个忙碌、精致的搬砖人,我开始是没想过我会养带毛的动物的。自己就很忙了,哪有时间清理宠物弄脏的房间。无奈,三年前某天下班,刚进到小区就被楼下一只小流浪缠上了。买了两根火腿肠喂了还不够,非得跟着我到单元楼…

Jedis,SpringDataRedis

快速入门 导入依赖 <!--jedis--><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>3.7.0</version></dependency><!--单元测试--><dependency><groupId>org.ju…

SPI子系统

IO特性 SPI接口一般使用四条信号线通信&#xff1a; SDI&#xff08;数据输入&#xff09;&#xff0c;SDO&#xff08;数据输出&#xff09;&#xff0c;SCK&#xff08;时钟&#xff09;&#xff0c;CS&#xff08;片选&#xff09; MISO&#xff1a; 主设备输入/从设备输出…

每日刷题(二分)

E. Klees SUPER DUPER LARGE Array!!! https://codeforces.com/contest/2009/problem/E 思路&#xff1a; 题目让我们求从k开始的n个数的前k个数的和与剩下的数的和的差最小是多少&#xff0c;可以用数学思维O(1)求解&#xff0c;都是我数学比较差&#xff0c;我们这里用二分…

企业财税自动化解决方案的成本效益分析与投资回报预测

随着企业规模的扩大和业务复杂度的增加&#xff0c;企业在财务管理方面也面临着诸多挑战&#xff0c;传统的财务管理方式逐渐无法满足企业经营需求&#xff0c;借助财税自动化解决方案来提高财务效率和准确性、降低人力成本&#xff0c;为企业带来长期的效益提升&#xff0c;已…

基于MATLAB的图像融合设计

摘 要 图像融合能够将不同类型传感器获取的同一对象的图像数据进行空间配准。并且采用一定的算法将不同类型的传感器获取的同一对象的图像数据所含用的信息优势或互补性有机地结合起来产生的新的图像数据。这种新数据含有所研究对象的更多信息表征&#xff0c;与单一图像相对比…

《python语言程序设计》2018版第8章第15题商业:检测ISBN-10一个国际标准书号

这个作者一天净出幺蛾子.我这边还老打错字,我现在都不敢用缩写,都是全拼 str_vis_text "013601267" len_num len(str_vis_text)def run_text(num_t, text_about):text_sum 0for i in range(0, num_t):text_sum if_digit(text_about[i])*(i1)print(text_sum%11)pr…

Python框架Pandas:DataFrame的应用

一、DataFrame DataFrame是什么&#xff1f; 1.1 DataFrame的创建 1.1.1 方式一&#xff1a;使用字典加列表创建df&#xff0c;使用默认自增索引 import pandas as pd # 使用字典加列表创建df&#xff0c;使用默认自增索引 df1_data {日期:[2021-08-21,2021-08-22,2021-0…

应用连接错误,初始化mysql数据库恢复---惜分飞

有人在部署一个新网站的时候,写错了配置信息,直接导致原有数据库被清掉,并创建了新库和写入了数据(其实本质就是drop table恢复) 登录操作系统查看,发现数据库文件在根分区,创建了新库,写入了数据之外,还有几个G的binlog.全部恢复不太可能,最后客户决定需要恢复的2个核心表数…

如何将写好的Java代码打成jar包放在hadoops上运行

1、打包java文件 2、jar包上传&#xff0c;hadoop执行 我们将打好的jar包上传到Linux&#xff0c;因为hadoop是安装在Linux上的&#xff0c;然后用hadoop执行&#xff0c;执行前要确保已经在Linux上配置了hadoop的环境变量&#xff0c;不然就要到hadoop的目录下执行该命令 执…

记一次Hiveserver2连接异常的解决-腾讯云-emr

原文阅读&#xff1a;【巨人肩膀社区博客分享】记一次Hiveserver2连接异常的解决-腾讯云-emr 离线任务跑的好好的&#xff0c;忽然有一天失败了&#xff0c;查看海豚上的任务执行日志发现是hiveserver2连接超时了。 查看监控发现了几个问题一个是GC变得频繁&#xff0c;另一个…

Mac电脑剪切板在哪里找 苹果电脑剪切板打开教程【详解】

Windows 和 Mac 电脑在使用方式上存在一些差异&#xff0c;许多习惯了 Windows 系统的用户初次接触 Mac 时可能会对某些操作感到困惑。比如&#xff0c;很多人会问&#xff1a;Mac 上的剪贴板在哪里&#xff1f;如果你也有这样的疑问&#xff0c;不妨看看下面这篇关于如何在 Ma…