中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Redis中的緩存穿透、緩存雪崩、緩存擊穿和緩存一致性怎么理解

發布時間:2021-11-25 09:41:02 來源:億速云 閱讀:145 作者:iii 欄目:關系型數據庫

這篇文章主要介紹“Redis中的緩存穿透、緩存雪崩、緩存擊穿和緩存一致性怎么理解”,在日常操作中,相信很多人在Redis中的緩存穿透、緩存雪崩、緩存擊穿和緩存一致性怎么理解問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Redis中的緩存穿透、緩存雪崩、緩存擊穿和緩存一致性怎么理解”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

Redis中的緩存穿透、緩存雪崩、緩存擊穿和緩存一致性怎么理解

緩存雪崩

緩存同一時間大面積失效,后面的請求都會落到數據庫上,造成數據庫短時間內無法承受大量請求而崩潰

例如在電商首頁,所有首頁的key失效時間都是12小時,中午12點刷新,如果零點有個秒殺活動大量用戶涌入,但是緩存當時所有key都失效,此時所有的請求會落到數據庫,數據庫扛不住,就直接就gg了,又或者redis宕機,也會讓大量請求落到mysql,造成掛機。【相關推薦:Redis視頻教程】

解決方案

  • 所以像這種情況就應該把每個key的失效時間加個隨機值,避免同一時間大量的key失效,如果是redis集群部署,可以將熱點數據分布到各個不同的庫。

  • 事前:盡量保證redis集群的高可用性,發現機器宕機盡快補上,選擇合適的內存淘汰策略

  • 事中:本地ehcache緩存+hystrix限流加降級,避免mysql崩掉

  • 事后:里有redis持久化機制保存的數據盡快恢復緩存。

緩存穿透

大量請求的key不存在于緩存中,例如某個黑客制造緩存中不存在的key發起大量請求,導致大量請求落到數據庫。

解決辦法

  • 首先應該要做基本的入參校驗,將不合法的參數直接攔截,例如查詢數據庫id不能小于0,校驗郵箱格式等等

  • 如果緩存和數據庫都查不到某個key的數據,就將key寫入到redis,value為null,并設置過期時間,避免下次請求落到數據庫上。

  • 通過布隆過濾器,布隆過濾器可以非常方便的判定一個給定的數據是否存在與海量數據中.可以將所有可能存在的請求的值存到布隆過濾器,當請求過來先判斷用戶發來的請求是否存在于布隆過濾器,不存在就直接攔截。

緩存擊穿

緩存擊穿指的是一個Key非常熱點,在不停的扛著大并發,大并發集中對這一個點進行訪問,當這個key失效瞬間,持續的大并發就穿破緩存,直接請求到數據庫

緩存一致性

如果是要求強一致性,那就不能使用緩存,因為保證不了強一致性,只能保證最終一致性。

  • 先刪除緩存,再更新數據庫

如果數據庫更新失敗,那么數據庫的還是舊數據,redis是空,數據不會不一致,讀到空會去數據庫進行查詢,然后更新到緩存。

  • 加入隊列,進行串行化操作

先刪除緩存,再更新數據庫,在高并發場景下也會出現問題,例如刪除了緩存,這時還沒更新數據庫,另一個線程進來,發現redis是空,會去讀數據庫,然后更新到redis,而此時刪除了緩存的線程接著更新數據庫,就會造成數據庫和redis數據不一致,這時候可以將更新數據的操作放到隊列當中,串行化操作,不會出現,但一般不建議這樣做,因為會降低效率。

到此,關于“Redis中的緩存穿透、緩存雪崩、緩存擊穿和緩存一致性怎么理解”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

德庆县| 称多县| 东乡族自治县| 万山特区| 长沙县| 克山县| 永兴县| 郸城县| 简阳市| 东宁县| 兴海县| 金溪县| 广平县| 铜梁县| 鸡西市| 班戈县| 明溪县| 工布江达县| 无锡市| 桃园县| 临武县| 巴马| 邮箱| 项城市| 武陟县| 德江县| 富宁县| 普安县| 额敏县| 双城市| 克拉玛依市| 左权县| 喀什市| 双桥区| 偃师市| 永济市| 陇西县| 登封市| 游戏| 沁阳市| 垣曲县|