码农知识堂 - 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. 单线程反⽽避免了多线程的频繁上下⽂切换带来的性能问题
     
  • 相关阅读:
    国产FTP文件传输服务器需要具备哪些关键特性?
    基于Spring Boot的ERP仓储管理信息系统设计与实现毕业设计源码150958
    基于haproxy负载均衡实现lamp与apache的高可用
    EPOLLRDHUP EPOLLHUP 事件
    django报错解决 Forbidden (403) CSRF verification failed. Request aborted.
    riscv fpga
    Shell脚本编程实践——第1关:编写一个脚本,求斐波那契数列的前10项及总和
    PPI数据集分析
    力扣(LeetCode)1106. 解析布尔表达式(C++)
    【C++】C++ 语言对 C 语言的加强 ④ ( C 语言中的三目运算符 - 不能作为左值 | C++ 语言中的三目运算符增强 | C 语言中三目运算符作为左值使用 )
  • 原文地址:https://blog.csdn.net/m0_70734549/article/details/126520855
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号