Redis緩存雪崩、穿透、擊穿以及解決方案

redis緩存雪崩

redis雪崩是指redis在某個時間大量的key失效,突然造成數(shù)據(jù)庫訪問壓力增大,像雪崩一樣。

redis雪崩危害巨大,可能會導致服務器宕機。

解決方案:

1:緩存失效時間為隨機值。

2:根據(jù)不同類型的緩存,做好失效時間策略。

3:采取多級緩存。

Redis緩存穿透

緩存穿透,是指緩存和數(shù)據(jù)庫中都沒有的數(shù)據(jù),用戶不斷發(fā)起請求,由于該數(shù)據(jù)不在緩存中,所以會一直訪問數(shù)據(jù)庫,造成數(shù)據(jù)庫壓力過大。

解決方案:

1:對于一些不合理的key,直接返回空。(例如查詢是,id為負數(shù)的請求)

2:對于數(shù)據(jù)庫為null的數(shù)據(jù),也緩存起來。

Redis緩存擊穿

緩存雪崩是大量的key,同一時間失效。緩存擊穿則是某一個key在失效的一瞬間,大量的并發(fā)請求到達服務端,造成瞬間數(shù)據(jù)庫壓力過大:,如秒殺活動等。

解決方案:

1: 對于熱點key,設置為永不過期。(會造成緩存中存在大量的key,而這些key的訪問頻率并不高,同時也要考慮緩存與數(shù)據(jù)庫的同步問題)

2:使用分布式鎖,保證同一時間只有一個線程去訪問數(shù)據(jù)庫,其他線程等待。(會降低服務器的相應時間,也可能存在死鎖等風險)

總結

緩存存在的意義就是為了減輕數(shù)據(jù)庫的查詢壓力,從而提高服務的QPS。而緩存的雪崩、穿透、擊穿都是在緩存失效的時候出現(xiàn)的。所以對于緩存的時候,需要結合業(yè)務,來處理相關的情況。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容