> 技术文档 > Redis单线程模型(含面试题)

Redis单线程模型(含面试题)

redis对于所有请求的处理时只使用一个线程,但是会在处理网络IO时使用多个线程。

redis能够使用单线程模型很好的工作,原因主要在于redis的核心业务逻辑,都是“短平快”的,不太消耗cpu资源,自然而然处理请求时就不太需要吃多核。

单线程弊端:必须特别小心,某个操作占用时间长,就会阻塞其他命令的执行。

经典面试题

redis虽然是单线程模型,为啥效率这么高,速度这么快呢?

首先效率高和速度快是要有参照物的,一般是相较于mysql,oracle,sql server等数据库。

主要原因为:

1.redis是访问内存的,而数据库是访问硬盘的。

2.redis的核心功能,比数据库的核心功能更简单。

3.redis采用单线程模型,避免了一些不必要的线程竞争开销。

4.处理网路IO的时候,使用了epoll这样的IO多路复用机制。

IO多路复用:一个线程可以管理多个socket,大部分情况下客户端和服务器之间的通信也没有那么频繁,此时这么多socket大部分时间都是静默的,上面是没有数据需要传输的。同一时刻,只有少数socket是活跃的,因此只需要一个线程就能够处理得过来。