多线程的目的是通过并发来提高I/O利用率和cpu的利用率,而redis操作是基于内存的,访问速度快,cpu资源根本不是Redis的性能瓶颈,因此是单线程的。但Redis并非没有多线程,Redis中只有网络请求模块和数据操作模块是单线程的,其他的如持久化模块和集群支撑模块就是多线程的。
Redis访问速度这么快主要原因也是因为内部采用了I/O多路复用技术。
Redis6.0后,多线程的引入也只是对网络访问请求进行处理,Redis本身的数据读写依旧是单线程的。此时单线程Redis已经有了强大的性能可以满足大部分公司需求,但此时若是还需要性能上得到提升就需要引入多线程,前面的IO复用技术本质上是同步阻塞性IO,当并发量大的情况下会出现大量阻塞还是会对性能有所影响,因此引入了多线程,跟前面提到的一样,多线程技术是用于处理
网络请求的,但数据的读写还是单线程的,由于读写是单线程的同时以避免了线程不安全的情况发生。