Redis在高並發情況下可能會存在哪些問題?


1、緩存穿透:

   當用戶請求參數為param=zsan 的時候,此時數據庫不存在改數據null ,默認null不保存到Redis,這時候大量惡意請求不

           存在數據,導致請求直接打在mysql數據庫上。

 

   解決辦法:當param=zsan 查詢為null時,直接存入一份到redis中,但這也只能保證這一份數據下次不打到mysql, 

                             如果惡意用戶,隨機生成不同參數,還是可以直接打到mysql中

 

2、緩存雪崩:    

   當緩存中的某些緩存存在同一很短的時間內幾乎同時到期,此時就可能引發雪崩問題。

  

         解決辦法:

    1、提前規划好系統中所有緩存的到期時間

    2、設置超時時間,加上隨機數,避免同一時間大量key失效

 

3、熱點緩存

        A用戶訪問param=sex消息,這時候剛好key緩存失效(正准備從數據庫查詢保存到Redis),這時候突然大量用戶請求這個key,

             導致數據還沒緩存的到Redis,又被請求到mysql中 【只要設置期時間,就有可能會引發熱點緩存】

 

 

   解決辦法:

    1、雙重檢測鎖機制

    2、見代碼

   

 


免責聲明!

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



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