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

数据库——Redis 没有使用多线程?为什么不使用多线程?

文章目录

  • Redis6.0 之后为何引入了多线程?

虽然说 Redis 是单线程模型,但是, 实际上,Redis 在 4.0 之后的版本中就已经加入了对多线程的支持。
在这里插入图片描述
不过,Redis 4.0 增加的多线程主要是针对一些大键值对的删除操作的命令,使用这些命令就会使用主处理之外的其他线程来“异步处理”。

大体上来说,Redis 6.0 之前主要还是单线程处理。

那,Redis6.0 之前 为什么不使用多线程?

我觉得主要原因有下面 3 个:

  1. 单线程编程容易并且更容易维护;
  2. Redis 的性能瓶颈不再 CPU ,主要在内存和网络;
  3. 多线程就会存在死锁、线程上下文切换等问题,甚至会影响性能。

Redis6.0 之后为何引入了多线程?

Redis6.0 引入多线程主要是为了提高网络 IO 读写性能,因为这个算是 Redis 中的一个性能瓶颈(Redis 的瓶颈主要受限于内存和网络)。

虽然,Redis6.0 引入了多线程,但是 Redis 的多线程只是在网络数据的读写这类耗时操作上使用了, 执行命令仍然是单线程顺序执行。因此,你也不需要担心线程安全问题。

Redis6.0 的多线程默认是禁用的,只使用主线程。如需开启需要修改 redis 配置文件 redis.conf

io-threads-do-reads yes

开启多线程后,还需要设置线程数,否则是不生效的。同样需要修改 redis 配置文件 redis.conf :

io-threads 4 #官网建议4核的机器建议设置为2或3个线程,8核的建议设置为6个线程
http://www.lryc.cn/news/141212.html

相关文章:

  • Node.JS教程
  • mysql表锁死怎么办?事务锁sql超时被锁死怎么办?
  • 基于JSP+Servlet+mysql学生宿舍管理系统
  • Enabling Large Language Models to Generate Text with Citations
  • Qt Qml实现仪表盘动画
  • 一次PostgreSQL复杂jsonb数据矫正过程分享
  • 如何在App里拉起小程序?
  • 函数式编程-Stream流学习第二节-中间操作
  • SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)
  • 无涯教程-进程 - 组会话控制
  • tomcat高可用和nginx高可用
  • 关于ios Universal Links apple-app-site-association文件 Not Found的问题
  • Objectarx MFC 添加ListControl并控制显隐
  • 2023年高教社杯数学建模思路 - 复盘:人力资源安排的最优化模型
  • SpringMVC 第二天
  • 抖音seo短视频矩阵系统源码开发源代码分享--开源-可二开
  • No message found under code ‘-1‘ for locale ‘zh_CN‘.
  • QtWidgets和QtQuick融合(QML与C++融合)
  • 基于Vue的3D饼图
  • Gateway简述
  • Midjourney API 的对接和使用
  • 01 消息引擎系统
  • npm 卸载 vuecli后还是存在
  • Unity 之利用 localEulerAngle与EulerAngle 控制物体旋转
  • 从零学算法 (剑指 Offer 13)
  • 854之数据结构
  • Redis从基础到进阶篇(二)----内存模型与内存优化
  • DBO优化SVM的电力负荷预测,附MATLAB代码
  • 第一百二十五回 dart中List和Map的常见用法
  • 小白到运维工程师自学之路 第七十九集 (基于Jenkins自动打包并部署Tomcat环境)2