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是活跃的,因此只需要一个线程就能够处理得过来。