Redis 为什么这么快?
Redis 为什么这么快?
回答重点
主要有 3 个方面的原因,分别是存储方式、优秀的线程模型以及 IO 模型、高效的数据结构。
- Redis 将数据存储在内存中,提供快速的读写速度,相比于传统的磁盘数据库,内存访问速度快得多。
- Redis 使用单线程事件驱动模型结合 I/O 多路复用,避免了多线程上下文切换和竞争条件,提高了并发处理效率。
- Redis 提供多种高效的数据结构(如字符串、哈希、列表、集合等),这些结构经过优化,能够快速完成各种操作
扩展知识
存储方式
Redis 的存储是基于内存的,直接访问内存的速度是远远大于访问磁盘的速度的。

一般情况下,计算机访问一次 SSD 磁盘的时间大概是 50 ~ 150 微秒,如果是传统硬盘的话,需要的时间会更长,可能需要 1 ~ 10 毫秒,而你访问一次内存,其需要的时间大概是 120 纳秒。由此可见,其访问的速度差了快一千倍左右。
除了一些场景,比如说持久化,Redis 很少需要与磁盘进行交互,大多数时候 Redis 的读写是基于内存的,因此其效率较高。
优秀的线程模型以及 IO 模型
Redis 使用单个主线程来执行命令,不需要进行线程切换,避免了上下文切换带来的性能开销,大大提高了 Redis 的运行效率和响应速度。
Redis 采用了 I/O 多路复用技术,实现了单个线程同时处理多个客户端连接的能力,从而提高 Redis 的并发能力。
不过 Redis 并不是一直都是单线程的,自 4.0 开始,Redis 就引入了 Unlink 这类命令,用于异步执行删除等操作,还有在 6.0 之后,Redis 为了进一步提升 I/O 的性能,引入了多线程的机制,利用多线程的机制并发处理网络请求,从而减少 Redis 由于网络 I/O 等待造成的影响。

高效的数据结构
Redis 本身提供了丰富的数据结构,比如字符串、哈希、Zset 等,这些数据结构大多操作的时间复杂度都为 O(1)。

备注:答案中的图来自 ByteByteGo:https://blog.bytebytego.com/p/why-is-redis-so-fast
五种 I/O 模型
Select、Poll、Epoll
Redis 中常见的数据类型(数据结构)
Comments