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線程的話,線程的創建銷毀以及線程切換導致的上下文切換開銷也會是不小的負擔。單線程就以及性能很高了。