Redis单线程为什么这么快?5大原因详解

Redis单线程为什么这么快?5大原因详解-mikechen

Redis单线程为什么这么快,经常在Java面试中被问到,下面我就详解Redis单线程为什么这么快的5大核心原因。

1.基于内存的数据存储

Redis 将所有数据都存储在内存中,避免了磁盘 I/O 的瓶颈,使得读写速度更快。

如下图所示,是内存与磁盘的访问速度独对:

Redis单线程为什么这么快?5大原因详解-mikechen

通过上图,可以看出Redis的内存存储非常快速,比直接访问磁盘快几个数量级,所以Redis能够快速地读取和写入数据。

 

2.多路复用

Redis 通过多路复用技术,Redis能够同时处理大量的连接请求,提高系统的吞吐量和并发性能。

多路复用可以同时处理多个客户端请求,而不是像传统的单线程模型一样只能逐个处理请求。

如下图所示:

Redis单线程为什么这么快?5大原因详解-mikechen

Redis 使用了基于 epoll、kqueue 或者 select 的多路复用技术,可以在单线程下处理多个客户端的请求,提高了并发处理能力。

 

3.精细的数据结构

Redis 内置了多种数据结构,如下图所示:

Redis单线程为什么这么快?5大原因详解-mikechen

 

例如:字符串、哈希表、列表、集合、有序集合等,可以快速高效地处理各种场景下的数据。

 

4.避免上下文切换

因为是单线程模型,因此就避免了不必要的上下文切换和多线程竞争,这就省去了多线程切换带来的时间和性能上的开销,而且单线程不会导致死锁的问题发生。

对于 Redis 而言,主要的性能瓶颈是内存或者网络带宽,而并非 CPU。

 

5.Lua 脚本支持

Redis 支持使用 Lua 脚本编写复杂的业务逻辑,可以减少客户端和服务器之间的通信次数,降低延迟,提高性能。

以上就是Redis 单线程为什么快的4大核心原因,主要就是利用内存、IO多路复用等机制来实现的。

作者简介

陈睿|mikechen,10年+大厂架构经验,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注作者「mikechen」公众号,获取更多技术干货!

后台回复架构,即可获取《阿里架构师进阶专题全部合集》,后台回复面试即可获取《史上最全阿里Java面试题总结

评论交流
    说说你的看法