Redis为什么快?

首先我们要知道,Redis是基于内存存储。这也是他快的主要原因。
但是你如果说Redis快,不能只说Redis基于内存。
还要说他是单线程模型(无锁竞争)
还要说他的IO多路复用(网络模型)
更要说他的
高效的数据结构*

单线程模型

多线程竞争共享数据需要加锁。没有线程切换,没有死锁。代码简单高效。

高效的数据结构

Redis为每种数据结构做了底层的优化

  • String
  • List
  • Hash
  • Set
  • ZSet

IO多路复用

传统的IO模型是阻塞IO,即一个线程处理一个连接。当一个连接处理完毕,会阻塞等待下一个连接。线程切换消耗CPU,而且read也会阻塞等待数据到达后在处理

IO多路复用则是创建一个调度中心,将多个连接注册到调度中心,当有连接有数据到达时,调度中心会通知对应的线程处理。