Redis
Redis为什么快?
Redis的数据是存储在内存上的,访问数据的时候可以直接访问内存即可,不需要通过cpu访问磁盘。因此可以知道redis的性能问题不在CPU上。
Redis为什么使用单线程?
- redis中的单线程是针对网络IO模块和读写模块,除了这两个模块外,其他的持久化和集群模块都是多线程的
- 单线程就没有多线程那样的上下文切换带来的性能开销
- 在单线程中使用了多路复用I/O技术
Redis为什么不使用多线程?
多线程的目的是什么?
通过并发的方式提供I/O利用率和CPU利用率
思考:既然知道了多线程的目的,那么思考为什么不用呢?
- redis的数据是存储在内存上的,所以不需要通过CPU访问磁盘,redis的性能瓶颈不在cpu上,所以多线程提高CPU的利用率就不符合了
- redis确实是一个I/O操作密集型的框架,要提升redis的性能肯定是要从IO进行下手的,但是提升IO的利用率不一定非要使用多线程,因为使用多线程会带来线程安全问题,还有线程切换带来的性能消耗。