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

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.kler.cn/a/153726.html

相关文章:

  • CentOS系统环境搭建(二十三)——运行Java服务
  • 带你用uniapp从零开发一个仿小米商场_10.开发一个占剩余窗口的滚动区域
  • spring boot 3.2.0 idea从零开始
  • Synchronized原理分析
  • syslog定期rotate和限制其size的配置方法ubuntu上
  • 如何使用torchrun启动单机多卡DDP并行训练
  • opencv2.4 android编译
  • 内存免杀--
  • ubuntu18编译Android8的Failed to contact Jack server问题
  • 激光SLAM:Faster-Lio 算法编译与测试
  • python+pytest接口自动化(6)-请求参数格式的确定
  • LeetCode56. 合并区间
  • FL Studio2024重磅更新 带你了解FL21.2最新版本功能
  • C语言 柔性数组
  • RK3568笔记六:基于Yolov8的训练及部署
  • LCR 047. 二叉树剪枝 和 leetCode 1110. 删点成林 + 递归 + 图解
  • CentOS 系列:CentOS 7 使用 virt-install + vnc 图形界面/非图形界面 创建虚拟机
  • clickhouse的向量化执行
  • 熬夜会秃头——Beta冲刺总结随笔
  • 39.从0到上线三天搭建个人网站(第三天)