为什么这么快

https://share.note.youdao.com/ynoteshare/index.html?id=e20f952ed7afde4e9460c3b6db6f107e&type=note&_time=1752253213036

  • 存内存操作,比磁盘块
  • 只需要处理的数据量小
  • 合理的数据结构
  • 网络模型使用了NIO
  • 单线程操作,避免了多线程的频繁操作
  • redis内置了多种优化后的数据结构

首先,io多路复用,并不比传统的阻塞io快,它主要解决了 c10k 问题,所以,epoll 只是在有限的机器资源下,提高了服务端的并发度,使得之前花很多时间阻塞在io上的cpu的利用率提升了。

多路复用对于Redis是为了解决在有限的资源下,解决阻塞IO造成的c10k问题,对单个请求无提升,但提升了整个系统的并发度。

如果可以开无限线程,Redis的网络其实可以设计成多线程的阻塞IO

设计理念就是只需要处理的数据量小,然后用IO多路复用来提高并发,发现单线程也够用,这样足够简单还不用搞多进程处理各种锁之类的

而说单线程没有锁比多线程有锁更快,也是没有根据的。多线程肯定比单线程快,然后花精力在锁设计这块就能解决。比如nginx多进程架构。