Skip to content

Latest commit

 

History

History
26 lines (8 loc) · 795 Bytes

redis-ae.md

File metadata and controls

26 lines (8 loc) · 795 Bytes

#多路复用的事件分粒器

reactor

##时间事件

##文件事件

Redis 处理的比较巧妙。先执行 aeSearchNearestTimer 确定距离下次时间事件执行还有多少时间,假设第一次执行直到下次时间事件还有100ms,先执行文件事件,epool_wait 的超时时间就设置为 100ms,如果 10ms后,有网络交互后经过一系列的处理后消耗 20ms,该次循环结束。aeSearchNearestTimer 会再次计算距离下次时间事件的间隔为 100 - 10 - 20 = 70ms,于是 epoll_wait 的超时时间为 70ms,70ms之内如果没有处理文件事件,则执行时间事件。这样即保证了即时处理文件事件,在文件事件处理完毕后又能按时处理时间事件。

#其它的第三方库

##libevent

##libev