Redis 新版本支持多線程,性能怎么樣?
分析&回答
我們先看看單線程的 Redis 為啥那么快哈
redis是基于內(nèi)存的,內(nèi)存的讀寫速度非常快;
redis是單線程的,沒有上下文切換以及無鎖操作,讀速度仍可達到11萬次/s,寫速度達到8.1萬次/s;
redis使用多路復用技術,可以處理并發(fā)的連接;說說IO多路復用
單線程存在的問題
只能使用CPU一個核;
如果刪除的鍵過大(比如Set類型中有上百萬個對象),會導致服務端阻塞好幾秒;
QPS難再提高。
因為上面的原因,Redis 持續(xù)在迭代。
Redis在4.0版本引入了Lazy Free,自此Redis有了一個Lazy Free線程專門用于大鍵的回收
Redis在6.0版本實現(xiàn)了多線程I/O
6.0 多線程默認是禁用的
6.0 4核的機器建議設置為2或3個線程,8核的建議設置為6個線程
6.0 多線程部分只是用來處理網(wǎng)絡數(shù)據(jù)的讀寫和協(xié)議解析,執(zhí)行命令仍然是單線程順序執(zhí)行
redis支持多線程主要就是兩個原因:
可以充分利用服務器 CPU 資源,目前主線程只能利用一個核
多線程任務可以分攤 Redis 同步 IO 讀寫負荷
支持多線程之后的測試結(jié)果:Redis 6 引入的多線程 IO 特性對性能提升至少是一倍以上。
反思&擴展
主要考慮原因和原理,對于性能這塊可以不要太較真。無聊的話可以自己測測。

《ASP.NET Core緩存Redis最佳實踐+分布式鎖+單點登錄(SSO)》
https://ke.qq.com/course/463345#term_id=104383317

評論
圖片
表情
