452 字
2 分钟
Redis为什么这么快?
- 基于内存操作:Redis 将数据主要存储在内存中,相比传统磁盘数据库,省去了大量磁盘 I/O 开销。
- 数据结构高效:Redis 针对不同场景设计了 SDS、哈希表、跳表等数据结构,提高了数据读写效率。
- I/O 多路复用:Redis 使用 I/O 多路复用机制,一个线程就可以同时监听和处理多个客户端连接,减少了线程切换和资源开销。
- 命令执行通常是单线程的:避免了多个线程同时操作共享数据带来的锁竞争,减少了并发管理的开销。
此外,Redis 的网络协议和执行流程也比较简洁,因此能够实现很高的吞吐量和较低的访问延迟。
Redis 为什么使用单线程,而不是多线程?
单线程执行命令可以减少锁竞争和线程切换开销,而且 Redis 的主要瓶颈通常不只是 CPU 计算。不过,对于网络 I/O 等工作,多线程也能提高性能,所以 Redis 6 引入了可选的多线程网络 I/O
Redis 是单线程的,为什么还能处理大量并发请求?
因为 I/O 多路复用可以同时监听大量连接。Redis 不需要一直等待某个客户端的数据,而是可以在连接就绪时处理相应事件。不过,命令执行通常仍然是串行的。
既然 Redis 很快,为什么还会变慢?
执行了复杂度较高的命令,例如对超大集合执行全量遍历。
存在 BigKey 或慢查询。
网络延迟较高。
内存不足,发生淘汰或系统开始使用 Swap。
持久化、后台任务或 CPU 资源竞争影响了性能。
目录