Redi是如何处理容易超时的系统调用的?
24-05-24 10:41
976
0
BIO 线程简介
Redis 在运行过程中,不可避免的会产生一些运行慢的、容易引发阻塞的任务,如将内核中的文件缓冲同步到磁盘中、关闭文件,都会引发短时阻塞,还有一些大 key,如一些元素数高达万级或更多的聚合类元素,在删除时,由于所有元素需要逐一释放回收,整个过程耗时也会比较长。而 Redis 的核心处理线程是单进程单线程模型,所有命令的接受与处理、数据淘汰等都在主线程中进行,这些任务处理速度非常快。如果核心单线程还要处理那些慢任务,在处理期间,势必会阻塞用户的正常请求,导致服务卡顿。为此,Redis 引入了 BIO 后台线程,专门处理那些慢任务,从而保证和提升主线程的处理能力。
Redis 的 BIO 线程采用生产者-消费者模型。主线程是生产者,生产各种慢任务,然后存放到任务队列中。BIO 线程是消费者,从队列获取任务并进行处理。如果生产者生产任务过快,队列可用于缓冲这些任务,避免负荷过载或数据丢失。如果消费者处理速度很快,处理完毕后就可以安静的等待,不增加额外的性能开销。再次,有新任务时,主线程通过条件变量来通知 BIO 线程,这样 BIO 线程就可以再次执行任务。
-
Windows Activation Key Viewer密钥查看器
有时候我们需要知道电脑的密钥方便以后更新激活系统,因为系统激活后是会隐藏密钥的,那么你就需要下载这款电脑密钥查看器(Windows Activa... 1225 0 24-05-31 -
css3导航菜单特效
358 0 21-05-17 -
Photoshop 三千个3D小人素材
595 0 21-07-12 -
常用正则表达式
特殊需求表达式 Email地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$ 域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.? InternetURL:[a-zA-z]+://[^\s]* 或 ^http://([\w-]+\. 471 0 21-05-06 -
移动小商城:基于node,包含前后台
移动小商城是一个基于Node.js技术构建的电子商务平台,旨在为用户提供便捷的移动端购物体验。Node.js是一个使用JavaScript语言运行在服务器... 1195 0 24-09-17 -
轻松学文言·课外文言文阅读宝三四五六年级+小升初
1067 0 24-07-13 -
DeskGo_3.3.1491.127-腾讯桌面整理工具独立版
DeskGo是一款由腾讯推出的桌面整理软件,是一款提取自腾讯桌面管家的DeskGo桌面整理绿色单文件版桌面整理工具DeskGo简体中文版可以让你免去... 748 0 25-02-09 -
Java并发编程实战
并发编程是Java语言的重要特性之一,在Java平台上提供了许多基本的并发功能来辅助开发多线程应用程序。然而,这些相对底层的并发功能与上层... 898 0 24-05-28
发表我的评论
共0条评论
- 这篇文章还没有收到评论,赶紧来抢沙发吧~