redis是单线程还是多线程?
1、Redis单线程
在一开始的时候,Redis采用的是单线程模型,因为Redis是一个基于内存的数据库,将所有的数据放入内存,所以使用单线程的操作效率是最高的,多线程会上下文切换消耗大量时间,对于内存系统来说,单线程才能产生更高的效率。但是单线程不意味着整个Redis就一个线程,Redis其他模块还有各自的线程。
Redis基于Reactor模式开发了网络事件处理器,这个处理器被称为文件事件处理器。它的组成结构为4部分:多个套接字、IO多路复用程序、文件事件分派器、事件处理器。因为文件事件分派器队列的消费是单线程的,所以Redis才叫单线程模型。
使用I/O多路复用
机制同时监听多个客户端,在单线程模式下,即使网络处理很多,因为存在I/O多路复用,依然可以在高速的内存处理下得到忽略。
2、Redis为什么引入多线程
Redis基于内存操作,CPU并不是性能瓶颈,Redis的瓶颈是根据机器的内存和网络带宽。在6.0的版本
中引入了多线程。
这个I/O threads 指的是网络I/O处理方面使用了多线程
,如网络数据的读写和协议解析等,这是因为读写网络的read/write在Redis执行期间占用了大部分CPU时间,如果把这部分模块使用多线程方式实现会对性能带来极大地提升。但是Redis执行命令的核心模块还是单线程的。
需要注意的是在 Redis6.0 中,多线程机制默认是关闭的,需要在 redis.conf
中完成以下两个设置才能启用多线程。
(1)设置 io-thread-do-reads 配置项为 yes,表示启用多线程。
io-threads-do-reads yes
(2)设置线程个数。⼀般来说,线程个数要小于 Redis 实例所在机器的 CPU 核数, 例如,对于⼀个 8 核的机器来说,Redis 官⽅建议配置 6 个 IO 线程。
io-threads 6
来具体看一下在 Redis6.0 中,主线程和 IO 线程是如何协作完成请求处理的。
redis是单线程还是多线程?相关推荐
- Redis 属于单线程还是多线程?不同的版本有什么区别?
Redis 是普及率最高的技术之一,同时也是面试中必问的一个技术模块,所以从今天开始我们将从最热门的 Redis 面试题入手,更加深入的学习和了解一下 Redis. 我们本文的面试题是 Redis 属 ...
- Redis 是单线程还是多线程
Redis 是单线程还是多线程 我们平时看到介绍 Redis 的文章,都会说 Redis 是单线程的.但是我们学习的时候,比如 Redis 的 bgsave 命令,它的作用是在后台异步保存当前数据库的 ...
- Redis是单线程还是多线程问题
在学习redis的过程中,很多文章都说redis是单线程,但在官方给出的说明中显示,redis6.0已经引入了多线程,对此我找了许多文档,将学习过程整理记录下来. 1.Redis单线程 在一开始的时候 ...
- Redis 5.0.8+常见面试题(单线程还是多线程、先更新缓存还是数据库、雪崩穿透击穿解决办法...)
Redis 6.0 保姆级教程(含微服务案例与完整面试题):https://www.yuque.com/yuxuandmbjz/redis Redis是单线程还是多线程 ?为什么这么设计 ? Redi ...
- 程序员过关斩将--请不要误会redis 6.0 的多线程
" 你对redis的单线程是不是有点误会? " 你对redis 6.0的多线程是不是也有点误会? " redis多线程一定可以提高性能吗? redis官方刚刚发布的6.0 ...
- Redis新版本发布,你还认为Redis是单线程?
Redis从单线程到多线程的转变 Redis简介 Redis单线程时代 `"单线程"`的Redis为什么会这么快? Redis的瓶颈 6.0版本后的Redis线程问题 redis的 ...
- 单线程多线程_面试系列 redis为什么快amp;单线程amp;多线程
redis为什么这么快 C语言实现,执行速度快 纯内存操作,数据读写在内存中,异步持久化到磁盘 丰富和高效的数据结构 基于非阻塞的I/O多路复用机制 单线程避免了上下文切换 Redis单线程 redi ...
- Redis单线程和多线程
Redis单线程 Reids是单线程! Reids是单线程! Reids是单线程! Redis架构模型:Redis 基于 Reactor 模式来设计开发了自己的一套高效的事件处理模型 ,即文件事件处理 ...
- Redis新特性、剖析线程模型(单线程与多线程)
一. Redis6.0 新特性 1. 多线程IO redis6.0引入多线程IO,只是用来处理网络数据的读写和协议的解析,而执行命令依旧是单线程,所以不需要去考虑set/get.事务.lua等的并发问 ...
最新文章
- Android Textview 实现版权符号© 的 实现
- 中奖名单,老读者请看过来!
- JS验证框架的使用方法
- 超图桌面版新建一个简单三维数据集并发布
- 汇编中的通用寄存器、标志寄存器、段寄存器
- java使用stream将List转为Map
- 【算法精讲】分享一道很不错的算法题
- 18.linux日志收集数据到hdfs上面
- python学习===复制list
- 用python画漂亮图-零基础用 Python 画图表,让你的论文更美观
- C# 中字符串string和字节数组byte[]的转换
- 图片处理view - 成图,
- 用C语言实现万年历的代码及思路(详细教程)
- ai人工智能写歌词app,ai写歌词网站,ai作词软件创作版,作词人的辅助工具,押韵助手
- 海康VisionMaster-脚本模块
- 基于Ionic3和极光推送实现推送功能
- 自动发货-用千牛如何做到发货号自动转接人工号
- 关于字符串中length与length()的区别
- 全栈开发-IDE介绍与设置、字符串格式化、数据类型、for循环
- Java Web过滤器(Filter)