问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Redis 6.0多线程介绍

发布网友 发布时间:2022-10-16 14:10

我来回答

1个回答

热心网友 时间:2023-10-19 18:00

Redis作为一个基于内存的缓存系统,一直以高性能著称,
在单线程处理情况下,读速度可达到11万次/s,写速度达到8.1万次/s。

官方曾做过类似问题的回复:使用Redis时,几乎不存在CPU成为瓶颈的情况, Redis主要受限于内存和网络。

但是,单线程的设计也给Redis带来一些问题:

针对上面问题,Redis在4.0版本以及6.0版本分别引入了Lazy Free以及多线程IO,逐步向多线程过渡。

 

Redis服务器是一个事件驱动程序,服务器需要处理以下两类事件:

Redis服务器通过套接字与客户端(或者其他Redis服务器)进行连接。
文件事件就是服务器对套接字操作的抽象

服务器与客户端的通信会产生相应的文件事件,而服务器则通过监听并处理这些事件来完成一系列网络通信操作。
(eg: 连接accept,read,write,close等)

Redis服务器中的一些操作(eg: serverCron函数)需要在给定的时间点执行。
时间事件就是服务器对这类定时操作的抽象
(eg: 过期键清理,服务状态统计等)

Redis将文件事件和时间事件进行抽象,时间轮询器会监听I/O事件表:
一旦有文件事件就绪,Redis就会优先处理文件事件,
接着处理时间事件。
在上述所有事件处理上,Redis都是以单线程形式处理,所以说Redis是单线程的。
处理过程见下图

Redis基于Reactor模式开发了自己的I/O事件处理器,也就是文件事件处理器。
Redis在I/O事件处理上,采用了I/O多路复用技术,同时监听多个套接字,
并为套接字关联不同的事件处理函数,通过一个线程实现了多客户端并发处理。
处理过程见下图

上述的设计,在数据处理上避免了加锁操作,既使得实现上足够简洁,也保证了其高性能。
当然,Redis单线程只是指其在事件处理上,实际上,Redis也并不是单线程的,比如生成RDB文件,就会fork一个子进程来实现。

 

背景:
客户端向Redis发送一条耗时较长的命令,比如删除一个含有上百万对象的Set键,或者执行flushdb,flushall操作,
Redis服务器需要回收大量的内存空间,导致服务器卡住好几秒,对负载较高的缓存系统而言将会是个灾难。

为了解决这个问题,在Redis 4.0版本引入了Lazy Free,将慢操作异步化,这也是在事件处理上向多线程迈进了一步。

将大键的删除操作异步化,采用非阻塞删除(对应命令UNLINK)。
大键的空间回收交由单独线程实现,主线程只做关系解除,可以快速返回,继续处理其他事件,避免服务器长时间阻塞。

意义:
Redis在4.0版本引入了Lazy Free,自此Redis有了一个Lazy Free线程专门用于大键的回收
同时,也去掉了聚合类型的共享对象,这为多线程带来可能。
这为Redis在6.0版本实现了多线程I/O打下了基础。

 

Redis 6.0的多线程并未将事件处理改成多线程,而是在I/O上。
因为,如果把事件处理改成多线程,不但会导致锁竞争,而且会有频繁的上下文切换,
即使用分段锁来减少竞争,对Redis内核也会有较大改动,性能也不一定有明显提升。

流程简述如下:

见下图

 

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

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

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...像是个小女生唱的歌词有 滴答滴滴滴滴滴滴滴滴滴,滴答滴滴滴_百度知 ... ...青纯的外国女孩唱了一首歌只记得高潮是啊啊啊啊啊啊啊啊啊 啊啊... ...唱的 歌词好像是 啊呀嚓嚓 啊滴嗒嗒 滴滴滴滴 ``` 从自助湖北宜昌到凤凰古城的最佳路线以及价钱??到凤凰古城重点景观都... 2024进出口许可证申请条件及办理流程(通用) lookattheelephant是什么意思 梦见一只大鸟落在手上 刘亮和白鸽离过婚吗 山西有什么好的技校 山西省有哪些好的职业高中和技校 关于捷安特XTC750 2012款捷安特xtc750好吗?我今天去捷安特专卖店,叔叔推荐我用10款XTC750,我认为他说的很有道理 怎么下载小丑拉圈圈助手 求蝙蝠侠小丑笑声铃声!在生活大爆炸莱纳德的手机上出现过,麻烦有的朋友发一下。邮箱46391576@qq.com 站群类网站怎样原创文章来优化网站? 自建网站怎样原创文章来优化网站? 沐春风而踔厉奋进,仰北斗以勇毅前行什么意思 密码找回服务提交后,已经登陆的微信会不会收到提示? 登录老公输入两次密码错误会收到提醒吗 国内高中毕业的学生,想去新西兰出国留学,那么新西兰本科一年费用多少钱? 留学需要一笔不小的费用,去新西兰留学读硕,硕士费用要多少呢? 新西兰留学费用是多少是很多人想要了解的问题,去新西兰留学费用是多少呢? 去新西兰留学需要有足够的资金支持,那么在新西兰留学费用需要多少呢? 很多海外学生申请新西兰留学,那么新西兰大学留学一年费用要多少呢? 新西兰留学一年需要多少费用 狮子滚绣球的寓意 狮子滚绣球有什么寓意 小米4卡槽打不开了,那配套的针用力还是不行,怎么办? 之前打开过两次 豌豆尖对身体有什么好处 蚂蚁花呗被莫名封停?原因确认了,可能是踩了这4个“雷区” android app inventor怎么复制 皮肤的好坏跟哪些因素有关 皮肤不好是跟内分泌有关系吗? 简单的委托书怎么写版本 新买的不锈钢杯子,里面是磨砂的,用热茶水泡了几遍,再喝水还是口发干,感觉有什么东西,是什么问题呢? 手机信号很弱或无服务的解决办法 微信解除手机绑定会怎样,原还可以继续使用吗? 微信解除手机绑定会怎样,原还可以继续使用吗? 绑定别人的身份证,但是已经解绑了里面还有零钱,对自己有影响吗? 热饮奶茶制作方法 热饮奶茶制作方法与步骤 欧米最便宜的手表多少钱或者低仿的 欧米ga老手表值多少钱? 我学会了发电子邮件作文 正品欧米的包包,大概多少钱啊?我看淘宝店上的都很便宜啊!不知道是不是正品?商场一般打几折? 欧米的包大概多少钱,属于奢侈品吗 欧米莱玛司2015葡萄酒多少钱? 电子邮箱的注册和使用300字作文 两面针中药牙膏里有什么? 心肌堵塞怎么一回事 心肌堵塞怎么治疗 心肌堵塞和心肌炎区别在那呢