雖然說 Redis 是單線程模型,但是, 實(shí)際上,Redis 在 4.0 之后的版本中就已經(jīng)加入了對(duì)多線程的支持。
不過,Redis 4.0 增加的多線程主要是針對(duì)一些大鍵值對(duì)的刪除操作的命令,使用這些命令就會(huì)使用主處理之外的其他線程來“異步處理”。
大體上來說,Redis 6.0 之前主要還是單線程處理。
那,Redis6.0 之前 為什么不使用多線程?
我覺得主要原因有下面 3 個(gè):
- 單線程編程容易并且更容易維護(hù);
- Redis 的性能瓶頸不再 CPU ,主要在內(nèi)存和網(wǎng)絡(luò);
- 多線程就會(huì)存在死鎖、線程上下文切換等問題,甚至?xí)绊懶阅堋?/li>
Redis6.0 之后為何引入了多線程?
Redis6.0 引入多線程主要是為了提高網(wǎng)絡(luò) IO 讀寫性能,因?yàn)檫@個(gè)算是 Redis 中的一個(gè)性能瓶頸(Redis 的瓶頸主要受限于內(nèi)存和網(wǎng)絡(luò))。
雖然,Redis6.0 引入了多線程,但是 Redis 的多線程只是在網(wǎng)絡(luò)數(shù)據(jù)的讀寫這類耗時(shí)操作上使用了, 執(zhí)行命令仍然是單線程順序執(zhí)行。因此,你也不需要擔(dān)心線程安全問題。
Redis6.0 的多線程默認(rèn)是禁用的,只使用主線程。如需開啟需要修改 redis 配置文件 redis.conf
:文章來源:http://www.zghlxwxcb.cn/news/detail-673992.html
io-threads-do-reads yes
開啟多線程后,還需要設(shè)置線程數(shù),否則是不生效的。同樣需要修改 redis 配置文件 redis.conf
:文章來源地址http://www.zghlxwxcb.cn/news/detail-673992.html
io-threads 4 #官網(wǎng)建議4核的機(jī)器建議設(shè)置為2或3個(gè)線程,8核的建議設(shè)置為6個(gè)線程
到了這里,關(guān)于數(shù)據(jù)庫(kù)——Redis 沒有使用多線程?為什么不使用多線程?的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!