redis与linux系统调用epoll

       redis 是一个单线程却性能非常好的内存数据库, 主要用来作为缓存系统。 redis 采用linux网络IO多路复用技术(epoll)来保证在多连接的时候, 系统的高吞吐量。redis的高并发与epoll介绍如下:

  1. redis的高并发的原因:
    1)绝大部分请求是内存操作,非常快速
    2)单线程,避免了不必要的上下文切换
    3)IO内部实现采用linux系统调用epoll,利用epoll的多路复用特性,绝不在io上浪费一点时间。
  2. epoll
    epoll是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。
    1)epoll 没有最大并发连接的限制,上限是最大可以打开文件的数目;epoll的连接数,可以通过文件查看 /proc/sys/fs/file-max。早期的系统调用select有大小限制(FD_SETSIZE,通常为1024)
    2)效率提升, 事件通知方式为每当fd就绪,系统注册的回调函数就会被调用,将就绪fd放到readyList里面,时间复杂度O(1)。它只管你“活跃”的连接 ,而跟连接总数无关。而select/pool需要遍历或传递全量的fd,时间复杂度为O(n)。
    3)内存拷贝, Epoll 使用了“共享内存 ”。
    参考:redis 为什么可以如此的高并发
    IO多路复用的三种机制Select,Poll,Epoll

你可能感兴趣的:(redis)