Redis真的是单线程?

讨论 这个问题前,先看下 Redis的版本中两个重要的节点:

  1. Redisv4.0(引入多线程处理异步任务)
  2. Redis 6.0(在网络模型中实现多线程 I/O )

所以,网络上说的Redis是单线程,通常是指在Redis 6.0之前,其核心网络模型使用的是单线程。

且Redis6.0引入多线程I/O,只是用来处理网络数据的读写和协议的解析,而执行命令依旧是单线程。

Redis在 v4.0 版本的时候就已经引入了的多线程来做一些异步操作,此举主要针对的是那些非常耗时的命令,通过将这些命令的执行进行异步化,避免阻塞单线程的事件循环。

在 Redisv4.0 之后增加了一些的非阻塞命令如 UNLINK、FLUSHALL ASYNC、FLUSHDB ASYNC。

发表评论

后才能评论