Redis 学习笔记系列一
什么是Redis单线程?
大家都知道Redis是单线程运行,那到底Redis为什么要设计成单线程模式?具体的单线程模式是什么样子的?
Redis 采用C语言编写,是一种key-value形式的内存数据库,可用于缓存,消息中间件,分布式锁等业务场景。
Redis为什么采用单线程
- redis 直接与内存交互速度上很快,官方提供的数据可达到10000+QPS(query per second)
- redis 的快主要归功于他的数据结构,这方面另外写篇文章学习一下。
- redis 才用单线程,避免了因为线程上下文切换和竞争带来的CPU消耗,不存在加锁解锁带来的消耗
- redis 采用I/O多路复用技术
什么是I/O多路复用
I/O多路复用(事件驱动),是指采用系统提供的select/epoll/poll等方法同时监听多个描述符的读写状态(当状态未就绪时则进行阻塞,就绪后再进行读写操作避免了无用操作),这些描述符的I/O状态能在一个线程内交替并发顺序的进行。
这里的多路是指多个网络连接, 复用指复用一个同一个线程。这样就尽量避免了多个连接的网络I/O消耗
单线程的缺点
- 因为使用单线程操作,在执行操作时间长的命令时会导致并发的下降
- 使用单个CPU,可以打开多个实例使用master-slave模式,会cluster模式等