Redis與緩存相關(guān)問題

緩存穿透

場景:用戶查詢數(shù)據(jù)庫中沒有的數(shù)據(jù),這樣不論如何都不會寫入緩存,請求量一大對數(shù)據(jù)庫也不是很友好
解決方法:

  1. 緩存無效Key
  2. 布隆過濾器

緩存雪崩

場景:并發(fā)量很大的情況下,大量數(shù)據(jù)同時(shí)過期,在那一瞬間,數(shù)據(jù)庫壓力暴增
解決方案:

  1. 在過期時(shí)間基礎(chǔ)上添加隨機(jī)數(shù)
  2. 設(shè)置數(shù)據(jù)永不過期,新開一個(gè)線程完成更新

緩存擊穿

場景:某個(gè)訪問量極大的數(shù)據(jù),在過期瞬間,所有訪問量打進(jìn)數(shù)據(jù)庫,給數(shù)據(jù)庫造成極大壓力
解決方案:

  1. 設(shè)置數(shù)據(jù)永不過期,新開一個(gè)線程完成更新
  2. 對大量的訪問線程進(jìn)行阻塞攔截,只放一個(gè)線程與數(shù)據(jù)庫進(jìn)行交互,并寫入緩存中

緩存與數(shù)據(jù)庫一致性問題

如何保證緩存與數(shù)據(jù)庫的一致性?

  1. 先操作緩存,將緩存緩存特殊值,當(dāng)用戶查到特殊值時(shí)則進(jìn)入休眠,但是對業(yè)務(wù)有入侵性;
  2. 延遲雙刪:先刪緩存,再寫數(shù)據(jù)庫,再刪緩存
  3. 先寫數(shù)據(jù)庫再刪緩存
  4. 邏輯上設(shè)置過期時(shí)間,另開線程刷新緩存,刪除邏輯上過期的key
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容