欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Java?redis中緩存穿透?緩存擊穿?雪崩三種現(xiàn)象以及解決方法

 更新時(shí)間:2022年01月18日 17:06:58   作者:acx匿  
緩存穿透是指緩存和數(shù)據(jù)庫(kù)中都沒(méi)有的數(shù)據(jù),而用戶不斷發(fā)起請(qǐng)求,如發(fā)起為id為“-1”的數(shù)據(jù)或id為特別大不存在的數(shù)據(jù)。這時(shí)的用戶很可能是攻擊者,攻擊會(huì)導(dǎo)致數(shù)據(jù)庫(kù)壓力過(guò)大

前言

本文主要闡述redis中的三種現(xiàn)象

1.緩存穿透

2.緩存擊穿

3.雪崩現(xiàn)象

本文主要說(shuō)明本人對(duì)三種情況的理解,如果需要知道redis基礎(chǔ)請(qǐng)查看其他博客,加油!

一、緩存穿透

理解:何為緩存穿透,先要了解穿透,這樣有助于區(qū)分穿透和擊穿,穿透就類似于傷害一點(diǎn)一點(diǎn)的累計(jì),最終打到穿透的目的,類似于射手,一下一下普通攻擊,最終殺死對(duì)方,先上圖

緩存穿透

先來(lái)描述一下緩存穿透的過(guò)程:

1.由于我們?nèi)?shù)據(jù)的原則是先查詢r(jià)edis上,如果redis上有數(shù)據(jù)那么我們就取redis,如果沒(méi)有則對(duì)數(shù)據(jù)庫(kù)進(jìn)行查詢

2.當(dāng)我們的應(yīng)用服務(wù)器壓力變大(例如我們雙十一進(jìn)行購(gòu)物)

3.那么我們同時(shí)大量數(shù)據(jù)訪問(wèn)redis,而redis中只有其中幾條數(shù)據(jù)的信息,那么我們就會(huì)對(duì)數(shù)據(jù)庫(kù)進(jìn)行大量的查詢(redis命中率降低)

4.導(dǎo)致數(shù)據(jù)庫(kù)崩潰

以上的過(guò)程就是緩存穿透

解決辦法:

1.對(duì)空值進(jìn)行緩存

2.設(shè)置黑(白)名單

3.采用布隆過(guò)濾器(布隆底層實(shí)際原理類似于優(yōu)化版的使用bitmap進(jìn)行緩存查詢)

二、緩存擊穿

理解:何為緩存擊穿,擊穿其實(shí)就是類似于爆發(fā)傷害,類似于高爆發(fā)的法師,一套技能瞬間殺死對(duì)方,上圖

緩存擊穿

先來(lái)描述一下緩存擊穿的過(guò)程:

1.由于我們?nèi)?shù)據(jù)的原則是先查詢r(jià)edis上,如果redis上有數(shù)據(jù)那么我們就取redis,如果沒(méi)有則對(duì)數(shù)據(jù)庫(kù)進(jìn)行查詢,擊穿的結(jié)果是redis還在正常運(yùn)行,mysql崩了

2.當(dāng)我們數(shù)據(jù)庫(kù)(mysql)訪問(wèn)量瞬間增加(例如我們雙十一進(jìn)行搶制定的商品)

3.而此時(shí),我們的redis上相對(duì)應(yīng)的key突然過(guò)期,那么我們把查詢壓力全給mysql

4.導(dǎo)致數(shù)據(jù)庫(kù)崩潰

以上的過(guò)程就是緩存擊穿

解決辦法:

1.預(yù)先設(shè)置熱門(mén)數(shù)據(jù)(例如先緩存好制定商品的信息)

2.實(shí)施調(diào)整(人工延長(zhǎng)key過(guò)期時(shí)間)

3.使用鎖(影響效率)

三、雪崩現(xiàn)象

理解:何為雪崩,顧名思義,就是一片雪花導(dǎo)致整個(gè)系統(tǒng)的崩盤(pán),先上圖

雪崩

先來(lái)描述一下緩存擊穿的過(guò)程:

1.由于我們?nèi)?shù)據(jù)的原則是先查詢r(jià)edis上,如果redis上有數(shù)據(jù)那么我們就取redis,如果沒(méi)有則對(duì)數(shù)據(jù)庫(kù)進(jìn)行查詢

2.當(dāng)我們服務(wù)器壓力變大(例如雙十一購(gòu)物)

3.而此時(shí),我們的redis上大量的key過(guò)期,導(dǎo)致數(shù)據(jù)庫(kù)壓力劇增,返回給服務(wù)器的效率變低

4.由于效率變低,導(dǎo)致我們r(jià)edis中緩存過(guò)多請(qǐng)求,導(dǎo)致redis崩潰

5.最終導(dǎo)致整個(gè)系統(tǒng)的崩盤(pán)

以上的過(guò)程就是雪崩

解決辦法:

1.構(gòu)建多級(jí)緩存(nginx緩存+redis緩存+其他緩存)

2.使用鎖或者隊(duì)列

3.設(shè)置過(guò)期標(biāo)志自動(dòng)更新

4.錯(cuò)開(kāi)key的過(guò)期時(shí)間(建議3 4結(jié)合使用)

總結(jié)

1.redis妙用很多,需要在實(shí)際應(yīng)用場(chǎng)景體會(huì)

2.思想很重要,基礎(chǔ)也很重要

3.謝謝尚硅谷的老師

4.歡迎討論指出錯(cuò)誤

視頻教程鏈接

到此這篇關(guān)于詳解Java redis中緩存穿透 緩存擊穿 雪崩三種現(xiàn)象以及解決方法的文章就介紹到這了,更多相關(guān)Java redis 緩存穿透 緩存擊穿 雪崩內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 一文深入了解Java中的AtomicInteger類

    一文深入了解Java中的AtomicInteger類

    AtomicInteger是java并發(fā)包下面提供的原子類,主要操作的是int類型的整型,通過(guò)調(diào)用底層Unsafe的CAS等方法實(shí)現(xiàn)原子操作,這篇文章主要給大家介紹了關(guān)于如何通過(guò)一文深入了解Java中AtomicInteger類的相關(guān)資料,需要的朋友可以參考下
    2024-02-02
  • logback中顯示mybatis查詢?nèi)罩疚募?xiě)入的方法示例

    logback中顯示mybatis查詢?nèi)罩疚募?xiě)入的方法示例

    這篇文章主要為大家介紹了logback中顯示mybatis查詢?nèi)罩疚募?xiě)入的方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-03-03
  • SpringBoot集成內(nèi)存數(shù)據(jù)庫(kù)Derby的實(shí)踐

    SpringBoot集成內(nèi)存數(shù)據(jù)庫(kù)Derby的實(shí)踐

    像H2、hsqldb、derby、sqlite這樣的內(nèi)存數(shù)據(jù)庫(kù),小巧可愛(ài),做小型服務(wù)端演示程序,非常好用。最大特點(diǎn)就是不需要你另外安裝一個(gè)數(shù)據(jù)庫(kù)。本文主要介紹了SpringBoot集成內(nèi)存數(shù)據(jù)庫(kù)Derby,感興趣的可以了解一下
    2021-09-09
  • SpringSecurity?用戶帳號(hào)已被鎖定的問(wèn)題及解決方法

    SpringSecurity?用戶帳號(hào)已被鎖定的問(wèn)題及解決方法

    這篇文章主要介紹了SpringSecurity?用戶帳號(hào)已被鎖定,本文給大家分享問(wèn)題原因及解決方式,需要的朋友可以參考下
    2023-12-12
  • java實(shí)現(xiàn)簡(jiǎn)單的圖書(shū)借閱系統(tǒng)

    java實(shí)現(xiàn)簡(jiǎn)單的圖書(shū)借閱系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡(jiǎn)單的圖書(shū)借閱系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Springboot整合RabbitMQ消息中間件的使用

    Springboot整合RabbitMQ消息中間件的使用

    在沒(méi)有特別要求的情況下,通常會(huì)選擇RabbitMQ作為消息中間件,本文主要介紹了Springboot整合RabbitMQ消息中間件的使用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-11-11
  • Spring運(yùn)行時(shí)動(dòng)態(tài)注冊(cè)bean的方法

    Spring運(yùn)行時(shí)動(dòng)態(tài)注冊(cè)bean的方法

    這篇文章主要介紹了Spring運(yùn)行時(shí)動(dòng)態(tài)注冊(cè)bean的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • 詳解java定時(shí)任務(wù)

    詳解java定時(shí)任務(wù)

    這篇文章主要為大家詳細(xì)介紹了java定時(shí)任務(wù),使用JDK中的Timer定時(shí)任務(wù)來(lái)實(shí)現(xiàn),感興趣的小伙伴們可以參考一下
    2016-03-03
  • Java序列化和反序列化示例介紹

    Java序列化和反序列化示例介紹

    大家好,本篇文章主要講的是Java序列化和反序列化示例介紹,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • Spring Boot 在啟動(dòng)時(shí)進(jìn)行配置文件加解密的方法詳解

    Spring Boot 在啟動(dòng)時(shí)進(jìn)行配置文件加解密的方法詳解

    這篇文章主要介紹了Spring Boot 在啟動(dòng)時(shí)進(jìn)行配置文件加解密的方法,本文通過(guò)實(shí)例給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06

最新評(píng)論