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

關(guān)于Redis的緩存穿透問題

 更新時(shí)間:2023年08月16日 08:30:08   作者:程序員阿紅  
這篇文章主要介紹了關(guān)于Redis的緩存穿透問題,緩存穿透是指客戶端請求的數(shù)據(jù)在緩存中和數(shù)據(jù)庫中都不存在,這樣緩存永遠(yuǎn)不會生效,這些請求都會打到數(shù)據(jù)庫,需要的朋友可以參考下

1. 緩存穿透的理解

緩存穿透是指客戶端請求的數(shù)據(jù)在緩存中和數(shù)據(jù)庫中都不存在,這樣緩存永遠(yuǎn)不會生效,這些請求都會打到數(shù)據(jù)庫。

2. 常見的解決方案有兩種:

  • 1.緩存空對象
    • 優(yōu)點(diǎn):實(shí)現(xiàn)簡單,維護(hù)方便
    • 缺點(diǎn):
      • 額外的內(nèi)存消耗
      • 可能造成短期的不一致
  • 2.布隆過濾
    • 優(yōu)點(diǎn):內(nèi)存占用較少,沒有多余key
    • 缺點(diǎn):
      • 實(shí)現(xiàn)復(fù)雜
      • 存在誤判可能

**緩存空對象思路分析:**當(dāng)我們客戶端訪問不存在的數(shù)據(jù)時(shí),先請求redis,但是此時(shí)redis中沒有數(shù)據(jù),此時(shí)會訪問到數(shù)據(jù)庫,但是數(shù)據(jù)庫中也沒有數(shù)據(jù),這個(gè)數(shù)據(jù)穿透了緩存,直擊數(shù)據(jù)庫,我們都知道數(shù)據(jù)庫能夠承載的并發(fā)不如redis這么高,如果大量的請求同時(shí)過來訪問這種不存在的數(shù)據(jù),這些請求就都會訪問到數(shù)據(jù)庫,簡單的解決方案就是哪怕這個(gè)數(shù)據(jù)在數(shù)據(jù)庫中也不存在,我們也把這個(gè)數(shù)據(jù)存入到redis中去,這樣,下次用戶過來訪問這個(gè)不存在的數(shù)據(jù),那么在redis中也能找到這個(gè)數(shù)據(jù)就不會進(jìn)入到緩存了

3. 布隆過濾:

布隆過濾器其實(shí)采用的是哈希思想來解決這個(gè)問題,通過一個(gè)龐大的二進(jìn)制數(shù)組,走哈希思想去判斷當(dāng)前這個(gè)要查詢的這個(gè)數(shù)據(jù)是否存在,如果布隆過濾器判斷存在,則放行,這個(gè)請求會去訪問redis,哪怕此時(shí)redis中的數(shù)據(jù)過期了,但是數(shù)據(jù)庫中一定存在這個(gè)數(shù)據(jù),在數(shù)據(jù)庫中查詢出來這個(gè)數(shù)據(jù)后,再將其放入到redis中,

假設(shè)布隆過濾器判斷這個(gè)數(shù)據(jù)不存在,則直接返回

這種方式優(yōu)點(diǎn)在于節(jié)約內(nèi)存空間,存在誤判,誤判原因在于:布隆過濾器走的是哈希思想,只要哈希思想,就可能存在哈希沖突

image-20221209213419848

4. 編碼解決查詢的緩存穿透問題:

核心思路如下:

在原來的邏輯中,我們?nèi)绻l(fā)現(xiàn)這個(gè)數(shù)據(jù)在mysql中不存在,直接就返回404了,這樣是會存在緩存穿透問題的

現(xiàn)在的邏輯中:如果這個(gè)數(shù)據(jù)不存在,我們不會返回404 ,還是會把這個(gè)數(shù)據(jù)寫入到Redis中,并且將value設(shè)置為空,當(dāng)再次發(fā)起查詢時(shí),我們?nèi)绻l(fā)現(xiàn)命中之后,判斷這個(gè)value是否是null,如果是null,則是之前寫入的數(shù)據(jù),證明是緩存穿透數(shù)據(jù),如果不是,則直接返回?cái)?shù)據(jù)。

1653327124561

小總結(jié):

緩存穿透產(chǎn)生的原因是什么?

  • 用戶請求的數(shù)據(jù)在緩存中和數(shù)據(jù)庫中都不存在,不斷發(fā)起這樣的請求,給數(shù)據(jù)庫帶來巨大壓力

緩存穿透的解決方案有哪些?

  • 緩存null值
  • 布隆過濾
  • 增強(qiáng)id的復(fù)雜度,避免被猜測id規(guī)律
  • 做好數(shù)據(jù)的基礎(chǔ)格式校驗(yàn)
  • 加強(qiáng)用戶權(quán)限校驗(yàn)
  • 做好熱點(diǎn)參數(shù)的限流

相關(guān)文章

  • Java線程狀態(tài)轉(zhuǎn)換關(guān)系實(shí)例解析

    Java線程狀態(tài)轉(zhuǎn)換關(guān)系實(shí)例解析

    這篇文章主要介紹了Java線程狀態(tài)轉(zhuǎn)換關(guān)系實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • eclipse自動(dòng)提示和自動(dòng)補(bǔ)全功能實(shí)現(xiàn)方法

    eclipse自動(dòng)提示和自動(dòng)補(bǔ)全功能實(shí)現(xiàn)方法

    這篇文章主要介紹了eclipse自動(dòng)提示和自動(dòng)補(bǔ)全的相關(guān)內(nèi)容,文中向大家分享了二者的實(shí)現(xiàn)方法代碼,需要的朋友可以了解下。
    2017-09-09
  • 基于Jpa中ManyToMany和OneToMany的雙向控制

    基于Jpa中ManyToMany和OneToMany的雙向控制

    這篇文章主要介紹了Jpa中ManyToMany和OneToMany的雙向控制,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • java開發(fā)RocketMQ之NameServer路由管理源碼分析

    java開發(fā)RocketMQ之NameServer路由管理源碼分析

    這篇文章主要為大家介紹了java開發(fā)中RocketMQ之NameServer路由管理源碼分析詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2021-11-11
  • java反射獲取一個(gè)object屬性值代碼解析

    java反射獲取一個(gè)object屬性值代碼解析

    這篇文章主要介紹了java反射獲取一個(gè)object屬性值代碼解析,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • Spring?IOC?xml方式進(jìn)行工廠Bean操作詳解

    Spring?IOC?xml方式進(jìn)行工廠Bean操作詳解

    這篇文章主要介紹了Spring?IOC?xml方式進(jìn)行工廠Bean操作,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-01-01
  • Java泛型初學(xué)者之上、下界通配符的深入理解

    Java泛型初學(xué)者之上、下界通配符的深入理解

    這篇文章主要給大家介紹了關(guān)于Java泛型初學(xué)者之上、下界通配符的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者實(shí)用Java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • 一文帶你搞懂Java類加載機(jī)制

    一文帶你搞懂Java類加載機(jī)制

    Java?類加載機(jī)制是?Java?運(yùn)行時(shí)的核心組成部分,負(fù)責(zé)在程序運(yùn)行過程中動(dòng)態(tài)加載和連接類文件,并將其轉(zhuǎn)換為可執(zhí)行代碼,接下來小編就來帶大家搞懂面試官老問的?Java?類加載機(jī)制,需要的朋友可以參考下
    2023-08-08
  • Springboot中spring-boot-starter-quartz的使用及說明

    Springboot中spring-boot-starter-quartz的使用及說明

    這篇文章主要介紹了Springboot中spring-boot-starter-quartz的使用及說明,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • java 獲取request中的請求參數(shù)代碼詳解

    java 獲取request中的請求參數(shù)代碼詳解

    這篇文章主要介紹了java 獲取request中的請求參數(shù)的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下
    2019-05-05

最新評論