Skip to content
一句话来说redis快是因为

基于内存操作+ 单线程无锁 +io多路复用+ 高效的数据结构

Redis 6.0 多线程主要用在

网络IO: 读请求、解析协议、写响应

没有用在

多线程执行redis命令

redis6.0后更准确的说法是:redis不是纯单线程,但是核心命令的执行仍然是单线程的。

为什么说CPU不是redis的瓶颈

因为在大多数普通使用场景中,redis的耗时主要不在计算,而是在网络io、数据拷贝、内存访问、慢命令、大key、持久化 这些地方。

redis大多数命令的本质都是:

找到key -- 读/写内存中的数据结构 -- 返回结果 复杂度很低

也就是说redis不是在做复杂的计算,而是在做内存数据访问。

一次redis请求的过程

客户端发送请求----网络传输--- redis从socket读取数据 --- 解析redis协议 --- 执行命令--- 生成响应 --- 写回socket -- 客户端接收响应。

什么时候CPU会变成瓶颈?

QPS 极高,大key访问,使用复杂命令