Redis 單線程?多線程? 之優化設置

Redis 單線程?多線程? 之優化設置

在配置前 可以先理解 Redis 作為高性能分佈式中間件這個軟體,其複雜性不言而喻,而之所以說是單線程主要是Redis在網路IO處理中是採用單線程來完成的。對於Redis的其他功能來說,例如:持久化、異步刪除、集群同步數據等都是由其他線程去完成的。

而單線程的優點如下:

  1. 使用單線程可以避免頻繁的上下文切換
  2. Redis中有各種對數據的操作,包括一些事物的處理,如果採用多線程可能會增加軟件的複雜度,甚至死鎖進而造成性能耗損,所以使用單線程更好。

單線程的劣勢:

  1. 無法發揮多核cpu的優勢
  2. 當刪除大檔時,會造成服務阻塞
  3. QPS達到瓶頸

而Redis 在 4.0和6.0 之後引入多線程IO,而配置方式如下

# redis.conf 
io-threads-do-reads yes # 開啟多線程 
io-threads 6 # 設置最大線程數,而官方建議超過8個就沒意義了,同時也要注意要小於機器的核心數