字节一面,Redis 为什么这么快?

一、问题解析

这是一道非常经典并且面试频率很高的面试题。却很少有人回答得比较全面,今天就给大家分享一下我的理解。决定 Redis 请求效率的因素主要是三个方面,分别是网络、cpu、内存。在网络层面,Redis 采用多路复用的设计,提升了并发处理的连接数,不过这个阶段,{如图}Server 端的所有 IO 操作,都是由同一个主线程处理的这个时候 IO 的瓶颈就会影响到 Redis 端的整体处理性能。

所以从 Redis6.0 开始{如图},在多路复用及层面增加了多线程的处理,来优化 IO 处理的能力。
不过,具体的数据操作仍然是由主线程来处理的,所以我们可以认为 Redis 对于数据 IO的处理依然是单线程。

 从 CPU 层面来说,Redis 只需要采用单线程即可,原因有两个。

1. 如果采用多线程,对于 Redis 中的数据操作,都需要通过同步的方式来保证线程安全性,这反而会影响到 redis 的性能

2. 在 Linux 系统上 Redis 通过 pipelining 可以处理 100w 个请求每秒,而应用程 序的计算复杂度主要是 O(N) 或 O(log(N)) ,不会消耗太多 CPU 从内存层面来说,Redis 本身就是一个内存数据库,内存的 IO 速度本身就很快,所以内存的瓶颈只是受限于内存大小。

最后,Redis 本身的数据结构也做了很多的优化,比如压缩表、跳跃表等方式降低了时
间复杂读,同时还提供了不同时间复杂度的数据类型。使得开发人员能够有更多合适的选择。
好了,今天的分享就到这里!

二、粉丝福利

我是浮生,一个工作十四年经验的Java程序员!

最近很多同学问我有没有java学习资料,我根据我从小白到架构师多年的学习经验整理出来了一份50W字面试解析文档、简历模板、学习路线图、java必看学习书籍 、 需要的小伙伴 可以关注我
公众号:“ 
灰灰聊架构 ”, 回复暗号:“ 321 ”即可获取

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt中关于信号与槽函数的思考

信号与槽函数的思考 以pushbutton控件为例,在主界面上放置一个pushbutton控件,点击右键选择关联槽函数,关联一个click函数,如下图所示: 在该函数中,实现了一个点击pushbutton按钮后,弹出一个窗…

VR全景广告为啥这么火?为营销领域带来了革命性变革

近年来,VR全景广告以其沉浸性和强交互性等特点融入到了各大行业的宣传推广中来,一度成为了时下各大企业品牌形象的新宠。VR全景不仅让用户感受到身临其境的视觉体验,还为企业提供了一种全新的营销手段,并为营销领域带来了革命性的…

Axios入门

1.概念 Axios是一个开源的可以用在浏览器和node.js的异步通信框架,他的主要功能是实现Ajax异步通信 2.Axios入门程序 2.1.准备json格式的文件 {"name": "小明","address": {"street": "雁塔","city"…

Failed at the phantomjs-prebuilt@2.1.16 install script.

1、问题概述? 在mac os系统,执行npm install的时候报错: npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! phantomjs-prebuilt2.1.16 install: node install.js npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the phantomjs-p…

BeautifulSoup+xpath+re+css简单复习+新的scrapy的学习

1.BeautifulSoupsoup BeautifulSoup(html,html.parser)all_icosoup.find(class_"DivTable") 2.xpath trs resp.xpath("//tbody[idcpdata]/tr") hong tr.xpath("./td[classchartball01 or classchartball20]/text()").extract() 这个意思是找…

高校水电预付费管控系统

高校水电预付费管控系统在现代高校管理中扮演着重要角色。这一系统通过整合先进的科技手段,如智能计量设备和互联网技术,实现对校园水电消费的精准监控和管理。首先,高校水电预付费管控系统能够有效监测学生宿舍、教学楼等区域的实时用水用电…

openGauss学习笔记-230 openGauss性能调优-系统调优-配置并行查询功能

文章目录 openGauss学习笔记-230 openGauss性能调优-系统调优-配置并行查询功能230.1 适用场景与限制230.2 资源对SMP性能的影响230.3 其他因素对SMP性能的影响230.4 配置步骤 openGauss学习笔记-230 openGauss性能调优-系统调优-配置并行查询功能 openGauss的SMP并行技术是一…

机试指南:Ch5:线性数据结构 Ch6:递归与分治

文章目录 第5章 线性数据结构1.向量 vector2.队列 queue(1)队列的特点、应用(2)基本操作(3)例题例题1:约瑟夫问题2 (难度:中等) (4)习题习题1:排队打饭 (难度:中等) 3.栈 stack(1)栈…

Unity 预制体与变体

预制体作用: 更改预制体,则更改全部的以预制体复制出的模型。 生成预制体: 当你建立好了一个模型,从层级拖动到项目中即可生成预制体。 预制体复制模型: 将项目中的预制体拖动到层级中即可复制。或者选择物体复制粘贴。…

【iOS ARKit】RealityKit 同步机制

协作 Session 可以很方便地实现多用户之间的AR体验实时共享,但开发者需要自行负责并确保AR场景的完整性,自行负责虚拟物体的创建与销毁。为简化同步操作,RealityKit 内建了同步机制,RealityKit 同步机制基于 Multipeer Connectivi…

Linux系统Docker部署Nexus Maven并实现远程访问本地管理界面

文章目录 1. Docker安装Nexus2. 本地访问Nexus3. Linux安装Cpolar4. 配置Nexus界面公网地址5. 远程访问 Nexus界面6. 固定Nexus公网地址7. 固定地址访问Nexus Nexus是一个仓库管理工具,用于管理和组织软件构建过程中的依赖项和构件。它与Maven密切相关,可…

form表单的自定义校验规则

需求&#xff1a;校验el-input输入为0-100的数字 <el-form :label-position"top" label-width"80px" ref"ogdiskForm" :model"originalDiskForm" :rules"rules" class"form"><el-form-item label"…