Redis使用了单线程架构和I/O多路复用模型来实现高性能的内存数据库服务,理解单线程模型是使用和运维redis的关键
client --> 发送命令--> server -->加入执行队列 --> 执行命令 --> 返回结果 --> client
由于redis是单线程来处理命令,一条命令从客户端到达服务端不会立刻被执行,命令会进入一个队列,然后被执行。
例如3个client,发起 incr counter 命令,3条命令会进入队列顺序执行
为什么单线程还这么快?
- 纯内存访问
- 非阻塞I/O
- 单线程避免了线程切换和竞态产生的消耗