大厂面试官:Redis是单线程?

最近问了个兄弟一个问题,Redis是单线程?

你搞懂这个问题,需要了解Redis的底层实现。

首先,Redis的核心命令执行是单线程。

传统上大家说 Redis 单线程,指的是客户端请求的接收、解析、数据读写与命令执行,主要由主线程完成。

为什么要这样设计?

所有数据操作(GET / SET / INCR):串行执行。

无锁无线程竞争,没有锁开销,不会有并发冲突,性能极高(10w+ QPS)…….

但如果你只回答单线程,那就只回答对了一半。

Redis 还有后台线程、持久化相关任务……等繁重的工作要做。

针对 I/O 密集型或慢操作,Redis 亦可借助多线程来执行 AOF 写入或 RDB 读写等部分工作,从而减轻主线程压力。

所以,说Redis 不是“纯”单线程,而是一个以单线程为核心逻辑、多线程为外围辅助@mikechen

评论交流
    说说你的看法