当前位置: 首页 > news >正文

redis单线程为什么这么快

redis单线程为什么这么快

redis是使用的单线程来进行操作的,因为所有的数据都是在内存中的,内存操作特别快。而且单线程避免了多线程切换性能损耗问题

单线程如何处理并发客户端连接?

redis利用epoll来实现IO多路复用,将连接信息和事件放到队列中,一次放到文件事件分派器,事件分派器分发给事件处理器。Redis 内部使用文件事件处理器 file event handler ,这个文件事件处理器是单线程的,所以 Redis 才叫做单线程的模型。它采用 IO 多路复用机制同时监听多个 socket,将产生事件的 socket 压入内存队列中,事件分派器根据 socket 上的事件类型来选择对应的事件处理器进行处理

文件事件处理器的结构包含 4 个部分:

  • 多个 socket
  • IO 多路复用程序
  • 文件事件分派器
  • 事件处理器(连接应答处理器、命令请求处理器、命令回复处理器)

多个 socket 可能会并发产生不同的操作,每个操作对应不同的文件事件,但是 IO 多路复用程序会监听多个 socket,会将产生事件的 socket 放入队列中排队,事件分派器每次从队列中取出一个 socket,根据 socket 的事件类型交给对应的事件处理器进行处理。

redis6.0新特性

redis在6.0之后开始引入多线程,因为读写网络的 Read/Write 系统调用在 Redis 执行期间占用了大部分 CPU 时间,如果把网络读写做成多线程的方式对性能会有很大提升。

Redis 的多线程部分只是用来处理网络数据的读写和协议解析,执行命令仍然是单线程

https://zhhll.icu/2021/数据库/非关系型数据库/redis/基础/12.redis单线程为什么这么快/

本文由 mdnice 多平台发布

http://www.lryc.cn/news/250855.html

相关文章:

  • 工业机器视觉megauging(向光有光)使用说明书(五,轻量级的visionpro)
  • 【LittleXi】2023年广东工业大学腾讯杯新生程序设计竞赛
  • 【C语言:数据在内存中的存储】
  • 每日一练:阿姆斯特朗数
  • fatal: remote error: upload-pack: not our ref (未解决问题)
  • Python 3 使用 read()、readline()、readlines() 函数 读取文件
  • 勒索解密后oracle无法启动故障处理----惜分飞
  • Leetcode144. 二叉树的前序遍历-C语言
  • dmesg命令在软件测试中的实际应用
  • 【渗透】记录阿里云CentOS一次ddos攻击
  • 前端面试提问(3)
  • fl studio21.2最新汉化中文完整版网盘下载
  • 差分数组相关知识点以及刷题
  • 使用 DMA 在 FPGA 中的 HDL 和嵌入式 C 之间传输数据
  • uniapp地图基本使用及解决添加markers不生效问题?
  • 使用系统ProgressBar实现三色进度条
  • Vue3中的组合式API的详细教程和介绍
  • Java后端开发——JDBC(万字详解)
  • python etree.HTML 以及xpath 解析网页的工具
  • 电机伺服驱动学习笔记(7)待编辑
  • 【云备份】业务处理
  • JVM GC算法
  • 对Spring框架的一些总结
  • C# WPF上位机开发(第一个应用)
  • 有点迷糊class和初始化参数的用法了
  • 如何选择一款安全稳定的跨境浏览器?
  • SQL Server 数据库,使用函数查询统计信息
  • mysql区分大小写吗
  • HarmonyOS 开发案例分享:万能卡片也能用来玩游戏
  • Could NOT find resource [logback-test.xml]