redis自学(22)Redis是单线程还是多线程?

Redis是单线程还是多线程?

Redis到底是单线程还是多线程?

  •  如果仅仅聊Redis的核心的业务处理部分(命令处理),答案是单线程
  •  如果是聊整个Redis那么答案是多线程

Redis版本迭代过程中,在两个重要的时间节点上引入了多线程的支持:

  • Redis v4.0:引入多线程异步处理一些耗时较长的任务,例如异步删除命令unlink
  • Redis v6.0:在核心网络模型中引入多线程,进一步提高对于多核CPU的利用率

为什么Redis要选择单线程?

  •  抛开持久化不谈,Redis是纯内存操作,执行速度非常快,它的性能瓶颈是网络延迟而不是执行速度,因此多线程并不会带来巨大的性能提升。(相比纯内存操作,IO多路复用只是削微的提升了速度)
  •  多线程会导致过的上下文切换,带来不必要的开销(单核的情况下,即使是后来加入了多线程,也是跟CPU的核数对应的,最多是12倍)
  •  引入多线程会面临线程安全问题,必然要引入线程锁这样的安全手段,实现复杂度增高,而且性能也会大打折扣
posted @ 2024-03-20 14:45  蓝海的bug本  阅读(13)  评论(0编辑  收藏  举报