redis处理请求时候,业务处理是利用回调函数 typedef void aeFileProc(struct aeEventLoop *eventLoop, int fd, void *clientData, int mask);
1、这个回调执行是在是重新开辟一个线程吗?这个跟liunx 信号有点类型
我一直想不明白,假如回到执行a函数,a函数是在哪里执行的呀 ?
2、liunx 定义一个typedef void aeFileProc就可以了,为什么?
Redis的AE事件模型库,本质上还是采用操作系统的Epoll模型,和linux的信号还是有很多不同。
1:没有重新开线程,redis的逻辑处理大部分情况下都是单线程,这也是他读写速度比较快的一个原因。那么,怎么执行业务函数a,可以查下多路复用机制。
也可以做个实验,在a函数里面sleep(10),可以发现,AE事件库是同步执行,并没有异步。
所以,这就要求,我们使用AE事件库时,我们的业务逻辑尽可能要小,如果比较大,可以拆分成多个小块,从而,保证其他业务处理能快速响应。
第二个不是很清楚。最后,建议你深入看看Redis的源码。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。