天津網(wǎng)站建設(shè)報價登錄百度app
文章目錄
- Redis6.0 之后為何引入了多線程?
雖然說 Redis 是單線程模型,但是, 實際上,Redis 在 4.0 之后的版本中就已經(jīng)加入了對多線程的支持。
不過,Redis 4.0 增加的多線程主要是針對一些大鍵值對的刪除操作的命令,使用這些命令就會使用主處理之外的其他線程來“異步處理”。
大體上來說,Redis 6.0 之前主要還是單線程處理。
那,Redis6.0 之前 為什么不使用多線程?
我覺得主要原因有下面 3 個:
- 單線程編程容易并且更容易維護;
- Redis 的性能瓶頸不再 CPU ,主要在內(nèi)存和網(wǎng)絡(luò);
- 多線程就會存在死鎖、線程上下文切換等問題,甚至?xí)绊懶阅堋?/li>
Redis6.0 之后為何引入了多線程?
Redis6.0 引入多線程主要是為了提高網(wǎng)絡(luò) IO 讀寫性能,因為這個算是 Redis 中的一個性能瓶頸(Redis 的瓶頸主要受限于內(nèi)存和網(wǎng)絡(luò))。
雖然,Redis6.0 引入了多線程,但是 Redis 的多線程只是在網(wǎng)絡(luò)數(shù)據(jù)的讀寫這類耗時操作上使用了, 執(zhí)行命令仍然是單線程順序執(zhí)行。因此,你也不需要擔心線程安全問題。
Redis6.0 的多線程默認是禁用的,只使用主線程。如需開啟需要修改 redis 配置文件 redis.conf
:
io-threads-do-reads yes
開啟多線程后,還需要設(shè)置線程數(shù),否則是不生效的。同樣需要修改 redis 配置文件 redis.conf
:
io-threads 4 #官網(wǎng)建議4核的機器建議設(shè)置為2或3個線程,8核的建議設(shè)置為6個線程