Redis 学习笔记系列一

什么是Redis单线程?

大家都知道Redis是单线程运行,那到底Redis为什么要设计成单线程模式?具体的单线程模式是什么样子的?

Redis 采用C语言编写,是一种key-value形式的内存数据库,可用于缓存,消息中间件,分布式锁等业务场景。

Redis为什么采用单线程

  1. redis 直接与内存交互速度上很快,官方提供的数据可达到10000+QPS(query per second)
  2. redis 的快主要归功于他的数据结构,这方面另外写篇文章学习一下。
  3. redis 才用单线程,避免了因为线程上下文切换和竞争带来的CPU消耗,不存在加锁解锁带来的消耗
  4. redis 采用I/O多路复用技术

什么是I/O多路复用

I/O多路复用(事件驱动),是指采用系统提供的select/epoll/poll等方法同时监听多个描述符的读写状态(当状态未就绪时则进行阻塞,就绪后再进行读写操作避免了无用操作),这些描述符的I/O状态能在一个线程内交替并发顺序的进行。
这里的多路是指多个网络连接, 复用指复用一个同一个线程。这样就尽量避免了多个连接的网络I/O消耗

Redis 学习笔记系列一

单线程的缺点

  1. 因为使用单线程操作,在执行操作时间长的命令时会导致并发的下降
  2. 使用单个CPU,可以打开多个实例使用master-slave模式,会cluster模式等