日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Redis——缓存击穿、穿透、雪崩

發布時間:2023/12/4 数据库 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redis——缓存击穿、穿透、雪崩 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、緩存穿透:

(1)問題描述:key對應的數據并不存在,每次請求訪問key時,緩存中查找不到,請求都會直接訪問到數據庫中去,請求量超出數據庫時,便會導致數據庫崩潰。如一個用戶id不存在,數據庫與緩存都不存在該id,此時黑客便可以利用此漏洞不斷訪問該id,造成數據庫崩潰。

(2)解決方法:

①對空值緩存:如果一個查詢數據為空(不管數據是否存在),都對該空結果進行緩存,其過期時間會設置非常短。

②設置可以訪問名單:使用bitmaps類型定義一個可以訪問名單,名單id作為bitmaps的偏移量,每次訪問時與bitmaps中的id進行比較,如果訪問id不在bitmaps中,則進行攔截,不給其訪問。

③采用布隆過濾器:布隆過濾器可以判斷元素是否存在集合中,他的優點是空間效率和查詢時間都比一般算法快,缺點是有一定的誤識別率和刪除困難。

④進行實時監控:對于redis緩存中命中率急速下降時,迅速排查訪問對象和訪問數據,將其設置為黑名單。

2.緩存擊穿:

(1)問題描述:key中對應數據存在,當key中對應的數據在緩存中過期,而此時又有大量請求訪問該數據,緩存中過期了,請求會直接訪問數據庫并回設到緩存中,高并發訪問數據庫會導致數據庫崩潰。

?

(2)解決方案:

①預先設置熱門數據:在redis高峰訪問時期,提前設置熱門數據到緩存中,或適當延長緩存中key過期時間。

②實時調整:實時監控哪些數據熱門,實時調整key過期時間。

③對于熱點key設置永不過期。

3、緩存雪崩·:

(1)問題描述:key中對應數據存在,在某一時刻,緩存中大量key過期,而此時大量高并發請求訪問,會直接訪問后端數據庫,導致數據庫崩潰。

注意:緩存擊穿是指一個key對應緩存數據過期,緩存雪崩是大部分key對應緩存數據過期

正常訪問下如圖:

緩存失效瞬間如下圖:

?

(2)解決方法:

①構建多級緩存機制:nginx緩存+redis緩存+其他緩存。

②設置過期標志更新緩存:記錄緩存數據是否過期,如果過期會觸發另外一個線程去在后臺更新實時key的緩存。

③將緩存可以時間分散:如在原有緩存時間基礎上增加一個隨機值,這個值可以在1-5分鐘隨機,這樣過期時間重復率就會降低,防止大量key同時過期。

④使用鎖或隊列機制:使用鎖或隊列保證不會有大量線程一次性對數據庫進行讀寫,從而避免大量并發請求訪問數據庫,該方法不適用于高并發情況。


---------------------
作者:后端小猿
來源:CSDN
原文:https://blog.csdn.net/weixin_50616848/article/details/123939734
版權聲明:本文為作者原創文章,轉載請附上博文鏈接!
內容解析By:CSDN,CNBLOG博客文章一鍵轉載插件

總結

以上是生活随笔為你收集整理的Redis——缓存击穿、穿透、雪崩的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。