0%

Redis之IO多路复用实现

IO多路复用实现意为单个线程通过记录跟踪多个I/O流的状态来同时管理多个I/O流。

一、概念

二、Redis源码剖析(基于6.0.7)

  1. redis6.0.7/src/ae.c
    • ae_evportSolaris 10系统(Unix)下的多路复用的实现,也是最早的实现,Kernel提供了一个特殊的设备文件/dev/poll来实现。
    • ae_epoll为Linux系统下多路复用的实现。
    • kqueueOS XFreeBSD系统下多路复用的实现。
    • select则是所有平台下的实现。
1
2
3
4
5
6
7
8
9
10
11
12
13
#ifdef HAVE_EVPORT
#include "ae_evport.c"
#else
#ifdef HAVE_EPOLL
#include "ae_epoll.c"
#else
#ifdef HAVE_KQUEUE
#include "ae_kqueue.c"
#else
#include "ae_select.c"
#endif
#endif
#endif

三、参考

  1. 参考一
  2. 参考二
  3. 参考三
  4. 参考四