开发者社区> 问答> 正文

redis 回调函数在哪里执行?

redis处理请求时候,业务处理是利用回调函数
typedef void aeFileProc(struct aeEventLoop *eventLoop, int fd, void *clientData, int mask);
1、这个回调执行是在是重新开辟一个线程吗?这个跟liunx 信号有点类型
我一直想不明白,假如回到执行a函数,a函数是在哪里执行的呀 ?
2、liunx 定义一个typedef void aeFileProc就可以了,为什么?

展开
收起
落地花开啦 2016-02-25 13:39:53 2707 0
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人

    Redis的AE事件模型库,本质上还是采用操作系统的Epoll模型,和linux的信号还是有很多不同。
    1:没有重新开线程,redis的逻辑处理大部分情况下都是单线程,这也是他读写速度比较快的一个原因。那么,怎么执行业务函数a,可以查下多路复用机制。
    也可以做个实验,在a函数里面sleep(10),可以发现,AE事件库是同步执行,并没有异步。
    所以,这就要求,我们使用AE事件库时,我们的业务逻辑尽可能要小,如果比较大,可以拆分成多个小块,从而,保证其他业务处理能快速响应。
    第二个不是很清楚。最后,建议你深入看看Redis的源码。

    2019-07-17 18:47:25
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Redis集群演化的心路历程——从2.x到3.0时代 立即下载
微博的Redis定制之路 立即下载
云数据库Redis版的开源之路 立即下载