高性能

线程模型(核心读写操作 | 单线程 持久化、集群同步、处理网络请求 | 多线程)

Redis 的网络 I/O 线程,以及键值的 SET 和 GET 等读写操作都是由一个线程来完成的。但 Redis 的持久化、集群同步等操作,则是由另外的线程来执行的。

虽然 Redis 一直是单线程模型,但是在 Redis 6.0 版本之后,也采用了多个 I/O 线程来处理网络请求,这是因为随着网络硬件的性能提升,Redis 的性能瓶颈有时会出现在网络 I/O 的处理上,所以为了提高网络请求处理的并行度,Redis 6.0 对于网络请求采用多线程来处理。但是对于读写命令,Redis 仍然使用单线程来处理

快的原因

  1. 纯内存操作、高效的数据结构
  2. 单线程,节省上下文切换和锁
  3. Redis 采用了 I/O 多路复用机制 epoll处理大量的客户端 Socket 请求,这让 Redis 可以高效地进行网络通信. reactor