为什么这么快
- 存内存操作,比磁盘块
- 只需要处理的数据量小
- 合理的数据结构
- 网络模型使用了NIO
- 单线程操作,避免了多线程的频繁操作
- redis内置了多种优化后的数据结构
首先,io多路复用,并不比传统的阻塞io快,它主要解决了 c10k 问题,所以,epoll 只是在有限的机器资源下,提高了服务端的并发度,使得之前花很多时间阻塞在io上的cpu的利用率提升了。
多路复用对于Redis是为了解决在有限的资源下,解决阻塞IO造成的c10k问题,对单个请求无提升,但提升了整个系统的并发度。
如果可以开无限线程,Redis的网络其实可以设计成多线程的阻塞IO
设计理念就是只需要处理的数据量小,然后用IO多路复用来提高并发,发现单线程也够用,这样足够简单还不用搞多进程处理各种锁之类的
而说单线程没有锁比多线程有锁更快,也是没有根据的。多线程肯定比单线程快,然后花精力在锁设计这块就能解决。比如nginx多进程架构。