1、简介

Redis内部使用文件事件处理器file event handler,这个文件事件处理器是单线程的,所以Redis才叫做单线程的模型。
Redis的性能瓶颈不在CPU,主要在内存和网络。
它采用IO多路复用机制,同时监听多个socket,将产生事件的socket压入内存队列中,事件分派器根据socket上的事件类型来选择对应的事件处理器进行处理。

image.png

为什么Redis是单线程也能效率这么高?

  1. Redis是纯内存操作。
  2. Redis的核心是基于非阻塞的IO多路复用机制。
  3. Redis底层使用C语言实现,一般来说,C语言实现的程序执行速度相对会更快。
  4. 单线程同时避免了多线程上下文频繁切换的问题,预防了多线程可能产生的竞争关系。
  5. 数据结构简单,对数据的操作也比较简单,Redis中的数据结构是专门进行设计的。
  6. Redis自己构建了VM机制,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求。