Skip to content

Redis是单线程还是多线程

Redis 采用的是单线程模型。通常说得单线程,主要指的是 Redis 对外提供的键值存储服务的主要流程是单线程的,即网络 I/O 和数据读写是由单个线程来完成的。这样设计可以避免多线程之间的竞争条件和锁开销,提高了访问共享数据的效率。

然而,除了对外提供的键值存储服务,Redis 在某些功能上会使用额外的线程来执行,比如持久化、异步删除和集群数据同步等。这些功能需要在后台执行,不参与主要的网络 I/O 和数据处理。因此,严格来说,Redis 并不是完全单线程。

更新: 2023-08-30 20:14:26
原文: https://www.yuque.com/tulingzhouyu/db22bv/ozdmkcsyl8s865bn

短视频

还有人在问reids到底是单线程还是多线程的?这个面试题还答不上来,真不应该啊,大家好,我是JJ,今天我们就来好好聊聊这个问题

大家好,我是JJ。今天我们要聊一个Redis面试中的热点问题:Redis是单线程还是多线程的?

先说答案:虽然Redis 6.0版本引入了多线程,但这并不是说指令执行是多线程的,而是针对网络I/O的,也就是我们常说的IO多路复用。

在Redis 6.0之前,所有的操作,包括网络I/O和命令执行,都是由单个线程完成的,但面对大量客户端请求时,这种单线程模式可能会成为效率瓶颈。

为了提高效率,Redis 6.0就引入了I/O多路复用,允许多个I/O线程并行处理网络请求,显著提升了网络处理效率。

但对于客户端指令而言,Redis 6.0依然保持单线程,这确保了操作的原子性和一致性。

总的来说,Redis 6.0的多线程是网络I/O的优化,而命令执行依然是单线程的。

更新: 2024-05-23 22:20:23
原文: https://www.yuque.com/tulingzhouyu/db22bv/kfdzqr0y5rmew60y