Redis 网络模型

SpringBoot使用mybatis-plus的自动代码生成器 一.SpringBoot使用mybatis-plus+自动代码生成 使用mybatis-plus可以自动帮我们生成通用的 controller,service,dao,mapper 二.加入依赖 <!-- MP 核心库 --> <dependency> <groupId>com.baomidou</groupId> <artif... 阅读详情

redis网络模型背景

1.进程分为用户空间和内核空间;

        用户空间和内核空间共同目标是对系统资源的访问,为了提高IO效率,给用户空间和内核空间都加入了缓存;访问的流程为读写两部分,读:用户空间访问内核空间的缓存产看是否存在资源,若没有内核空间再对系统资源进行访问获取资源后存在缓存层,再读取到用户空间进行逻辑操作;写:将用户空间的缓存内容拷贝到内核空间缓存层,然后写入硬件中;

2.阻塞IO

        阻塞IO指的是IO模型中等待数据的状态,发生在两个阶段,第一个阶段:用户空间执行recvfrom从内核空间中查找资源,内核缓存层并没有数据就进入到等待状态,第二个阶段:内核空间从硬件上也无法拷贝资源,进入等待状态;

3.非阻塞IO

        非阻塞IO指的是用户进程执行recvfrom从内核空间查找数据,但是没有数据内核空间就会返回错误给用户,但其实内核空间的从缓存层拷贝数据也是处于等待状态,用户进程得到错误信息后会不断访问内核空间,知道内核空间拷贝数据成功后返回正确给用户进程,用户在进行逻辑调用;与阻塞IO的区别在于第一阶段等待与否,性能稍差,不如阻塞IO;

4.IO多路复用

         无论阻塞IO还是非阻塞IO,存在一个问题是在第二个阶段都要进行等待,cpu的利用率不太好,IO多路复用解决了这一问题,使用单线程监听FD的状态,然后再调用recvfrom从内核空间拷贝资源到用户空间供用户进行使用;

        FD:用来关联linux中的文件,linux中一切皆为文件,FD是一个无符号整数

        IO多路复用过程:用户调用select同时监听多个socekt,如果发现FD 是readable,就调用recvfrom从内核空间拷贝数据到用户供用户使用

        IO多路复用采用select存在很多的缺点,例如:监听的FD不能超过1024,需要拷贝FD到内核空间并且要遍历所有的FD;而采用epoll不用遍历所有的FD,直接拷贝到用户空间,采用红黑树来存储FD,大小不上限,增删改查非常方便  ,性能不会因FD的数量受影响;   

        Web服务使用Redis epoll 流程:用户空间的服务端创建实例epoll_create,severSocket得到FD,epoll_ctl 监听FD,注册所有FD到红黑树,如果监听到FD就绪,将就绪的FD存储链表中,epoll_wait 等待FD从链表中判断是否存在链表头,如果存在判断事件类型,如果是异常写出响应 ,如果是epollin判断ssfd是否可读,如果可读  accept接收客户端socket得到对应的FD然后到监听FD再到注册过程,如果ssfd不可读就直接读取请求参数作出响应。

        异步IO:用户进程调用aio_read函数通知内核空间然后不再关心干其他事情,而内核空间进行等待数据带数据就绪拷贝数据到用户空间,递交aio的信号,信号函数处理信号到用户进程;

总结:所谓阻塞IO中的阻塞实际上是指第一阶段等待数据是否阻塞,都不阻塞的是异步IO;同步与异步是看第二阶段是否阻塞,阻塞与非阻塞IO都是同步IO;

Redis网络模型核心是IO多路复用和事件派发,使用单线程,使用多线程的地方是两部分,一个是对命令的解析,还有就是写返回结果,性能的关键在于IO本身,与是否多线程关系不大。

怀旧版电脑GBC模拟器 再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。 立即下载

相关推荐

公文派2025:免费社区版重大安装更新!

距离上一次更新已经过去了将近一年的时间,今天我们带来了全新的免费2025社区版,该版本也是目前最新的版本,无需授权即可使用所有的功能。

似最初 1960

源码篇--Redis 网络模型

知道了Redis 底层的数据结构,接下来看下 Redis 通信的网络模型。用户空间并不能直接的访问 系统资源,需要发送指令到内核空间,然后内核空间执行指令 从系统获取磁盘,然后将获取到的资源拷贝到用户空间,然后在从用户空间拷贝到用户空间;redis 内部使用IO多路复用,在linux 环境下,通过创建红黑树来监听多个socket 的fd 文件,并将就绪的fd 写入到就绪链表中;这样服务端就可以对就绪链表进行遍历;

拽着尾巴的鱼儿的博客 1894

国密(3)- 预主密钥/主密钥计算和Finished消息的加解密

国密的ECC-SM3-SM4-CBC模式下的预主密钥和主密钥的生成过程介绍,以及Finished消息的加解密介绍

weixin_43408952的博客 6509

Redis网络模型

服务器大多都采用Linux系统,这里我们以Linux为例来讲解: 任何Linux发行版,其系统内核都是Linux.我们的应用都需要通过Linux内核与硬件交互。 为了避免用户应用导致冲突甚至内核崩溃,用户应用与内核是分离的: 阻塞IO,顾名思义就是两个阶段都必须等待: 可以看到,阻塞IO模型中,用户进程在两个阶段都是阻塞状态。顾名思义,非阻塞IO的recvtrom操作会立即返回结果而不是阻塞用户进程。 可以看到,非阻塞IO模型中,用户进程在第一个阶段是非阻塞,第二个阶段是阻塞状态。虽然是非阻塞,但性能

xiaowanziddd的博客 1626

Cilium动手实验室: 精通之旅---5.Mutual Authentication with Cilium

在Cilium 入门实验室中,您将在受《星球大战》启发的场景中实施高级第 3-7 层网络策略。在实验结束时,您将实施强大的网络策略,并通过微分段保护 Empire 免受来自叛乱的攻击。在本实验中,您将重新部署《星球大战》演示应用程序,但除了网络策略之外,您还将了解如何在工作负载之间实施相互身份验证。

Q先生 1396

YOLOv9原创自研:卷积魔改 | 一种新颖的风车形卷积(PConv)融合注意力机制,加强微弱小目标检测能力

为了进一步提升小目标检测能力,风车形卷积(PConv)融合注意力机制进一步提升小目标检测能力

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 359

浅谈Redis网络模型

Redis 是C语言开发的一个开源高性能键值对的内存数据库,也是一种NoSQL(not-only sql,非关系型数据库)的数据库,可以用来做数据库、缓存、消息中间件等场景。在目前的技术选型中,Redis常常被用来作为数据缓存和分布式锁的解决方案。Redis具有以下几个特点,分别是高性能,多种数据结构,支持持久化,分布式等等:1)高性能:Redis是基于内存的数据存储系统,可以实现高速读写操作,适合用作数据缓存和高速读写的存储系统。

weixin_43907032的博客 738

ue 蓝图 c++ websocket 事件回调

ue 蓝图 c++ websocket 事件回调

jacke121的专栏 166

【Redis】网络模型

Redis(Remote Dictionary Server)是一个开源的高性能键值对存储系统,广泛用于各种网络应用中作为数据库、缓存和消息代理。Redis的网络模型是其高性能的关键因素之一,它涉及到多个方面,包括内存管理、事件处理、网络协议等。了解Redis的网络模型有助于更好地利用其功能,优化系统的性能和可靠性。

weixin_40381772的博客 2121

[Dify] 多步对话流程的实现技巧:构建连贯自然的多轮交互系统

摘要:本文探讨了AI系统中实现多轮对话的核心技术与应用方法。文章首先分析了多步对话的典型场景(如机票预订、财务报告生成)及其价值,提出了Dify平台实现该功能的三大机制:变量系统、条件控制和状态管理。随后详细介绍了顺序型、条件型和确认型三种基本对话模式,并通过"会议预约助手"案例展示了实际应用流程。文章还提供了提示词设计、变量引用等实用建议,并强调多轮对话成功的关键在于清晰的结构设计而非单纯依赖模型能力,最终实现自然流畅的人机交互体验。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 1343

万字长文带你由浅入深夯实ARM汇编基础——汇编指令及寻址方式最全梳理(附示例)!

见到汇编就害怕?读完这篇,扫除汇编拦路虎!!(示例丰富,可做手册,随手查阅!)

车载系统攻城狮 1万+

【Redis 原理】网络模型

redis 网络模型

Suk_god的博客 1252

从苏宁电器到卡巴斯基(第二部)第01篇:我在卡巴的日子 I

聊聊行业薪酬 我相信不论是谁,如果是入职一家新的公司,那么他最想知道的一件事情就是待遇情况了。这里既包含每月实际能到手多少钱,又包括五险一金是否齐全以及是按照高标准还是低标准缴纳。另外,如果是入职IT公司,还会在意年终奖有多少,毕竟某些富裕的IT企业,每到年末就会以此制造新闻来博取大家的关注,以彰显自身的实力。 一言以蔽之,待遇问题也就是年收入究竟会有多少,也是我们进入职场的人喜欢相互打听的问题。比如我研究生那届最厉害的一位同学,签了A公司的算法岗位,年薪30W+(税前,下同),在当时的我看来就是天价了

Gleam的专栏 1224

Redis原理篇——Redis网络模型

我们的应用程序也好,还是内核空间也好,都是没有办法直接去物理内存的,而是通过分配一些虚拟内存映射到物理内存中,我们的内核和应用程序去访问虚拟内存的时候,就需要一个虚拟地址,这个地址是一个无符号的整数,比如一个32位的操作系统,他的带宽就是32,他的虚拟地址就是2的32次方,也就是说他寻址的范围就是0~2的32次方, 这片寻址空间对应的就是2的32个字节,就是4GB,这个4GB,会有3个GB分给用户空间,会有1GB给内核系统。不过在其database结构体中,有两个Dict:一个用来记录key-value;

maruofan666的博客 1515

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

redis网络模型

Redis 的网络模型以高性能为目标,采用单线程的事件驱动机制管理客户端连接和请求处理。Redis 的网络模型以单线程事件驱动为核心,结合高效的 IO 多路复用机制,提供了出色的性能和可靠性。通过 Java 的 NIO 框架,我们可以实现类似 Redis 的网络模型,用于高并发场景的网络服务开发。

Flying_Fish_roe的博客 796

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【黑马Redis原理篇】Redis网络模型

来源视频 [16,27]

乾坤未定,你我皆是黑马 1285

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【Redis网络模型】

第三章 Redis网络模型。

qq_46005538的博客 1346

Redis—网络模型

Redis网络模型基于IO多路复用技术,采用单线程处理核心命令以避免多线程开销。Redis通过epoll实现高效的事件驱动,监听多个文件描述符,当数据就绪时通知主线程处理。通信采用RESP协议,支持多种数据类型

a15915169的博客 576

Redis原理(二):Redis网络模型

Redis采用单线程的事件驱动模型,基于Reactor模式实现高性能网络通信。其核心组件包括文件事件处理器(File Event Handler)、I/O多路复用机制以及非阻塞I/O操作。

2401_87596091的博客 1499

Redis网络模型总结

ae.c文件判断当前操作系统是否支持ae_evport,如果支持则引入ae_evport.c;如果不支持,则判断是否支持ae_poll,如果支持则引入ae_poll;以此类推,如果都不支持,则引入ae_select.c。redis实现这四个 .c 文件时,都给它们暴露了统一的 API 接口。……等接口。

weixin_44591233的博客 738

Redis原理篇之网络模型

Redis原理篇之网络模型用户空间和内核空间IO模型阻塞IO非阻塞IOIO多路复用Selectselect模式存在的问题pollepoll对比模式对比 用户空间和内核空间 任何Linux发行版,其系统内核都是Linux。 我们的应用都需要通过Linux内核与硬件交互。 操作系统运行起来后,会占用部分系统资源,例如: 内存资源,cpu资源等. 此时,用户应用程序也同样需要占用这些资源,如果不加以限制,那么会和操作系统争抢资源,导致冲突。 为了避免用户应用导致冲突甚至内核崩溃,用户应用与内核是分离的。 进

m0_53157173的博客 2161

redis底层—网络模型

select模式存在的三个问题:能监听的FD最大不超过1024每次select都需要把所有要监听的FD都拷贝到内核空间每次都要遍历所有FD来判断就绪状态poll模式的问题:poll利用链表解决了select中监听FD上限的问题,但依然要遍历所有FD,如果监听较多,性能会下降epoll模式中如何解决这些问题的?1.基于epoll实例中的红黑树保存要监听的FD,理论上无上限,而且增删改查效率都非常高,性能不会随监听的FD数量增多而下降。

weixin_60246228的博客 772
上一篇: Redis 底层原理解析
下一篇: Hibernate学习收获
bryan_java_boy
博客等级 码龄8年 0粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值