码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Redis线程模型、单线程快的原因


    Redis基于 Reactor模式 开发了⽹络事件处理器,这个处理器叫做⽂件事件处理器 file event handler 。这个⽂件事件处理器,它是单线程的,所以 Redis 才叫做单线程的模型,它采⽤IO多路复⽤机制来同时监听多个Socket,根据Socket上的事件类型来选择对应的事件处理器来处理这个事件。可以实现⾼性能的⽹络通信模型,⼜可以跟内部其他单线程的模块进⾏对接,保证了 Redis 内部的线程模型的简单性 。

    ⽂件事件处理器的结构包含 4 个部分: 多个Socket 、 IO多路复⽤程序 、 ⽂件事件分派器 以及 事件处理器 (命令请求处理器、命令回复处理器、连接应答处理器等)。
    多个 Socket 可能并发的产⽣不同的操作,每个操作对应不同的⽂件事件,但是IO多路复⽤程序会监听多个 Socket,会将 Socket 放⼊⼀个队列中排队,每次从队列中取出⼀个 Socket 给事件分派器,事件分派器把 Socket 给对应的事件处理器。

    然后⼀个 Socket 的事件处理完之后,IO多路复⽤程序才会将队列中的下⼀个 Socket 给事件分派器。⽂件事件分派器会根据每个 Socket 当前产⽣的事件,来选择对应的事件处理器来处理。

    单线程快的原因:

    1. 纯内存操作
    2. 核⼼是基于⾮阻塞的IO多路复⽤机制
    3. 单线程反⽽避免了多线程的频繁上下⽂切换带来的性能问题
     
  • 相关阅读:
    ARM接口实验—串口实验
    语义分割的常用方法和评价准则
    论文解读(GRCCA)《 Graph Representation Learning via Contrasting Cluster Assignments》
    JNI编程之字符串处理
    3--新唐nuc980 kernel支持jffs2, Jffs2文件系统制作, 内核挂载jffs2, uboot网口设置,uboot支持tftp
    第二十三节——路由守卫
    基于RuoYi-Flowable-Plus的若依ruoyi-nbcio支持自定义业务表单流程的集成方法与步骤(一)
    Redis源码之SDS简单动态字符串
    QT学习之路(一)ubuntu 18.04的Qt Creator在线安装
    ESP8266-Arduino编程实例-VEML6040颜色传感器驱动
  • 原文地址:https://blog.csdn.net/m0_70734549/article/details/126520855
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号