redis內部會導致主線程阻塞的點以及對應的解決方案


本文主要介紹redis內部會導致主線程阻塞的點以及對應的解決方案。

主要阻塞點

redis內部主要有五個阻塞點,其中三個可以通過異步解決,從而避開對redis主線程的阻塞。如下圖所示。

redis異步機制

Redis啟動后,會創建三個子線程用於aof日志異步寫入,異步數據刪除(bigkey刪除和清空數據庫)以及異步文件關閉。

無法異步的阻塞操作優化

集合操作和RDB加載屬於redis操作的關鍵路徑(客戶端必須要拿到真正的執行結果)是沒辦法做成異步操作的,對於這兩類操作只能做優化,最大可能的降低阻塞的時間。

集合操作優化

可以少量scan,分批讀取數據,然后到客戶端進行聚合,把工作由redis server移到客戶端

RDB加載優化

控制redis數據量的大小,控制在2-4GB,這樣rdb會以較快的速度加載。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM