首页 redis中的单线程
文章
取消

redis中的单线程

Redis使用了单线程来处理用户请求命令,不会有多条命令同时执行。

Redis单线程快的原因:

  1. 纯内存访问。Redis将所有数据放在内存中,而内存的响应时长很短,约100ns。
  2. 非阻塞I/O,Redis使用了 epoll 作为 I/O 多路复用技术的实现,且Redis的事件处理模型将 epoll 的连接、读写、关闭转换为了事件,不会在网络IO上浪费太多时间。
  3. 单线程避免了多线程时的线程切换和竟态产生的消耗。

优势:

  1. 单线程可以简化数据结构和算法的实现。
  2. 避免线程切换和竟态产生消耗,对于服务端开发来说,锁和线程切换对性能影响很大。

缺点:

  1. 若命令执行时间过长,会造成其它命令的阻塞。

在redis6.0以上,redis使用了多线程,处理用户请求的还是单线程,其他线程用来处理数据的读写和协议解析。redis 的性能瓶颈在于网络IO,而不是CPU,使用多线程能提升IO的读写效率。

本文由作者按照 CC BY 4.0 进行授权