首页 > 数据库 >通过redis学网络(2)-redis网络模型

通过redis学网络(2)-redis网络模型

时间:2023-06-12 13:56:37浏览次数:57  
标签:协议 模型 redis 网络 conns 解析 Conn

本系列主要是为了对redis的网络模型和集群原理进行学习,我会用golang实现一个reactor网络模型,并实现对redis协议的解析。

系列源码已经上传github

https://github.com/HobbyBear/tinyredis/tree/chapter2

redis 网络模型

在介绍redis网络模型前,我们先来看看redis的一条命令执行涉及到哪些阶段。

从连接读取数据 => 协议解析 => 命令执行 =>  将结果返回给客户端

而平时我们说的redis的单线程指的则是 命令执行阶段是单线程的,而redis6.0以后协议解析和返回结果给客户端都可以是多线程去进行处理。

由此衍生出redis6.0的网络模型如下:

redis网络模型.png

主线程通过一个epoll实例负责监听连接和等待数据的到达,并且执行解析好的命令。

举个例子,当主线程执行epoll wait时发现有100个socket可读,并且这100个socket都是已经完成连接建立的socket,然后主线程就会把这100个socket分给子线程去进行读取, 当子线程将这些socket的 字节数据解析成redis命令后,会再把这些命令交再给主线程去执行。主线程执行完以后又将这些命令执行结果交给子线程去进行发送。

整个过程可以看到实际的网络io的读取是交给多个线程去执行了,但是命令的执行还是在一个线程完成的。

再用流程图去表示整个过程将会更加清晰,

image.png

可以看见,整个过程中命令执行是在主线程去顺序执行的。而现在我们就是要用golang去实现这样一个模型。

标签:协议,模型,redis,网络,conns,解析,Conn
From: https://www.cnblogs.com/hobbybear/p/17474818.html

相关文章

  • 2023年第三届陕西省大学生网络安全技能大赛职业组-writup
    题目列表easyrce题目描述题目名称easyrce题目难度★★题目分值1000考察知识点pearcmd.php代码审计命令执行解题步骤第一步题目信息:访问题目页面查看信息。第二步解题过程:1、看到题目中出现$_SERVER["QUERY_STRING"],猜测考点是pearcmd.php。使用exp直接下载木......
  • 2023年第三届陕西省大学生网络安全技能大赛本科组web官方-writup
    题目列表:ezpop题目描述题目名称ezpop题目难度★题目分值1000考察知识点一点前端小知识,构造POP链,fastdestruct和Unicode解题步骤第一步题目信息:访问题目页面查看信息。第二步解题过程:访问题目发现要求ClickMe,但是点不动,尝试F12,右键和Ctrl+U发现均会关闭......
  • [重读经典论文] ConvNeXt——卷积网络又行了
    参考博客:ConvNeXt网络详解参考视频:13.1ConvNeXt网络讲解ConvNeXt其实就是面向SwinTransformer的架构进行炼丹,最后获得一个比SwinTransformer还要牛逼的网络。 ......
  • 机器学习模型训练全流程
    周末在家无聊闲逛github,发现一个很有趣的开源项目,作者用手绘图的方式讲解了机器学习模型构建的全流程,逻辑清晰、生动形象。同时,作者也对几张图进行了详细的讲解,学习之后,收获很多,于是将其翻译下来,和大家一起学习。地址:https://github.com/dataprofessor/infographic 全文如下......
  • stm32 DM9162 网络编程实现
     TX_CLK:数据发送时钟线。标称速率为10Mbit/s时为2.5MHz;速率为100Mbit/s时为25MHz。RMII接口没有该线。RX_CLK:数据接收时钟线。标称速率为10Mbit/s时为2.5MHz;速率为100Mbit/s时为25MHz。RMII接口没有该线。TX_EN:数据发送使能。在整个数据发送过程保存有......
  • Redis两种持久化机制RDB和AOF详解
    redis是一个内存数据库,数据保存在内存中,但是我们都知道内存的数据变化是很快的,也容易发生丢失。幸好Redis还为我们提供了持久化的机制,分别是RDB(RedisDataBase)和AOF(AppendOnlyFile)。在这里假设你已经了解了redis的基础语法,某字母网站都有很好的教程,可以去看。基本使用的文章......
  • 造价管理-3-5-网络计划 | 关键工作 关键线路 | 双代号 单代号 | 一般都是推迟的问题
    本质上本节考的是把中文翻译成中文的能力关键工作和关键线路考的关键词考点关键工作关键线路总时差对错(始末)节点错错间隔错对自由时差错节点问题注意:关键和节点无关,但是考点就是关键和节点的翻译关键和节点无关,但网络和节点有关不管......
  • Kafka通信模型/流程
    Kafka的Producer、Broker和Consumer之间采用的是一套自行设计的基于TCP层的协议由于UDP协议是一种不可靠的传输协议,所以Kafka系统采用TCP协议作为服务间的通信协议通信通信模型Reactor线程模型JavaNIO中的selector模型。最简单的Reactor模型中,有多个client向服务端发送请......
  • 什么是网络可视化?
    网络可视化是一种利用图形、图像和动画等方式将网络结构、节点关系、流量等信息进行可视化展示的技术。它通过显示数据和信息的方式,提供了一种直观的方式来认识和理解网络结构及其性能,并且可以对复杂的网络结构和流量数据作出有效地分析和决策。网络可视化技术的应用非常广泛,它可......
  • qperf 监测机器之间的网络延迟
    ###################### yum-yinstallqperf#关闭网络防火墙qperf-t10--use_bits_per_sec10.10.10.10tcp_lat  安装javajdk#解包tar-xfjdk-8u111-linux-x64.tar.gz-C/usr/local/#设环境变量vim/etc/profileexportJAVA_HOME=/usr/local/jd......