Redis的单线程和多线程
Redis6.0之前是单线程的,6.0之后是多线程的,我们先了解6.0版本之前的单线程Redis。但其实无论6.0之前还是6.0之后,redis用于工作的线程也只有一个,所以也可以说redis一直是单线程的。
Redis单线程
Redis 6.0之前使用的是单线程,这并不是说整个Redis中只有一个线程,而是Redis的工作线程只有一个,用来和客户端进行I/O的以及处理逻辑的线程只有一个。
Redis多线程
Redis6.0之后使用了多线程,但是工作线程依旧是单线程,只是多了一种IO线程。如下图所示,读写命令会交给IO线程来执行,而命令真正的处理逻辑还是由Worker线程来处理。
为什么单Worker线程性能高?
Redis是基于内存的,这就保证了效率高,其次Redis的操作一般都比较简单,比如get,set之类的操作,不会涉及到很复杂的逻辑操作,所以如果用多worker线程的话,线程的创建销毁以及线程切换导致的上下文切换开销也会是不小的负担。单线程就以及性能很高了。