redis是单线程,为什么还那么快
1. 纯内存操作
所有数据存储在内存中,读写速度比磁盘快 100,000倍 以上(内存访问约 100ns,SSD 约 1ms)。
避免传统数据库的磁盘 I/O 瓶颈。
2. 单线程无锁竞争
单线程避免了多线程的上下文切换和锁竞争开销。
3. 使用 I/O 多路复用,非阻塞IO
解释一下I/O多路复用模型
Redis是纯内存操作,执行速度非常的快,它的性能瓶颈是网络延迟而不是执行速度,I/O多路复用模型主要就是实现了高效的网络请求
- 初始化:将需要监听的fd(如Socket)注册到多路复用器(如 epoll)。
- 阻塞监听:调用 epoll_wait 阻塞线程,直到至少一个fd就绪。
- 事件触发:当某个fd就绪(如客户端发送数据),多路复用器返回就绪的fd列表。
- 非阻塞处理:程序遍历就绪的fd,执行读/写操作(不会阻塞其他fd的处理)。