Redis代码阅读3--Redis网络监听(3)
是介绍Redis网络监听的最后一篇文章,着重分析定时时间处理函数serverCron,这个函数其实已经和网络监听没多大关系了,当时因为其绑定在Redis自定义的事件库的定时事件上,所以放到一起来讲。serverCron的这个函数对Redis的正常运行来说很重要,对于Redis的使用者来说,最重要的就是能够迅速直观地看到Redis的当前的运行状况(keys,sizes,memory等),serverCron就能够使用户得知这些信息,此外,serverCron这个方法定时周期地运行,还承担了AOF Write,VM Swap,BGSAVE,Rehash的操作,使得Redis的运行更加平稳。还是来直接通过代码来分析:
此次,Redis的网络监听部分都介绍完了。再回过头来看前面提到的几个问题:1.????????Redis支持epoll,select,kquque,,通过配置文件来决定采取哪一种
2.????????支持文件读写事件和定时事件
3.????????采用数组来维护文件事件,链表来保存定时事件(在查找定时事件时,性能不高,有待提高)
4.????????Redis Server单线程响应事件,按照先后顺序来响应事件,因此单台Redis服务器的吞吐量会随着连接的clients越来越多而下降,可以通过增加更多的Redis服务器来解决这个问题
5.????????Redis在很多代码里都考虑到了尽快地响应各种事件,如在aeProcessEvent里面,轮询的wait时间等于当前时间和最近的定时事件响应时间的差值;每次进入轮询wait之前,在beforesleep方法里先响应刚刚unblock的clients等。
?