Redis为什么这么快
- 完全基于内存操作
- 使⽤单线程,避免了线程切换和竞态产生的消耗
- 基于⾮阻塞的IO多路复⽤机制
- C语⾔实现,优化过的数据结构,基于⼏种基础的数据结构,redis做了⼤量的优化,性能极⾼
IO多路复用机制讲解
1 单线程阻塞处理
2 多线程并发处理
3 IO多路复用,单线程并发处理 用户程序只需要将请求提交给内核,由内核用少量的线程去监听,有事件就通知用户程序呢?这就是IO多路复用
IO多路复用机制是指一个线程处理多个IO流,多路是指网络连接,复用指的是同一个线程,对于并发较高会有很大优势,当有事件发生时,用一个线程就能处理大量网络IO请求,实际上基本所有中间件在处理网络IO这一块都会使用到IO多路复用,如kafka,rocketmq等
select/poll/epoll
这三个函数是实现linux io多路复用的内核函数
redis网络IO模型底层使用IO多路复用,通过reactor模式实现的