Redis 單線程?多線程? 之優化設置
在配置前 可以先理解 Redis 作為高性能分佈式中間件這個軟體,其複雜性不言而喻,而之所以說是單線程主要是Redis在網路IO處理中是採用單線程來完成的。對於Redis的其他功能來說,例如:持久化、異步刪除、集群同步數據等都是由其他線程去完成的。
而單線程的優點如下:
- 使用單線程可以避免頻繁的上下文切換
- Redis中有各種對數據的操作,包括一些事物的處理,如果採用多線程可能會增加軟件的複雜度,甚至死鎖進而造成性能耗損,所以使用單線程更好。
單線程的劣勢:
- 無法發揮多核cpu的優勢
- 當刪除大檔時,會造成服務阻塞
- QPS達到瓶頸
而Redis 在 4.0和6.0 之後引入多線程IO,而配置方式如下
# redis.conf
io-threads-do-reads yes # 開啟多線程
io-threads 6 # 設置最大線程數,而官方建議超過8個就沒意義了,同時也要注意要小於機器的核心數