亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

redis緩存延時(shí)雙刪的原因分析

 更新時(shí)間:2022年08月16日 08:48:50   作者:____lynn_____  
延時(shí)雙刪就是在增刪改某實(shí)體類的時(shí)候,要對(duì)該實(shí)體類的緩存進(jìn)行清空,清空的位置在數(shù)據(jù)庫操作方法的前后,這篇文章主要介紹了redis緩存為什么要延時(shí)雙刪,需要的朋友可以參考下

緩存為啥是刪除,而不是更新?

如果是更新,存在分布式事務(wù)問題,可能出現(xiàn)修改了緩存,數(shù)據(jù)庫修改失敗的情況。只是刪除緩存的話,就算數(shù)據(jù)庫修改失敗,下次查詢會(huì)直接取數(shù)據(jù)庫的數(shù)據(jù),也不會(huì)出現(xiàn)臟數(shù)據(jù)。

延時(shí)雙刪是什么?

就是在增刪改某實(shí)體類的時(shí)候,要對(duì)該實(shí)體類的緩存進(jìn)行清空,清空的位置在數(shù)據(jù)庫操作方法的前后。

采用反證法

只先刪

????

在這里插入圖片描述

只后刪

在這里插入圖片描述

結(jié)論

從而得出 前刪和后刪都有問題。所以采用延時(shí)雙刪的策略

思考2:為啥是延時(shí)

依然是反證法。下圖這情況是雙刪依然存在舊緩存的情況,延時(shí)是確保 修改數(shù)據(jù)庫-》清空緩存前,其他事務(wù)的更改緩存操作已經(jīng)執(zhí)行完。

在這里插入圖片描述

補(bǔ)充:為什么要延遲雙刪,來保證緩存一致性

為什么要延遲雙刪,來保證緩存一致性

  • 在修改數(shù)據(jù)庫數(shù)據(jù)前,需要先刪除一次redis:此時(shí)是為了保證在數(shù)據(jù)庫數(shù)據(jù)修改和redis數(shù)據(jù)被刪除的間隔時(shí)間內(nèi),如有命中,保證此數(shù)據(jù)也不存在redis中。如果沒有這一次刪除,當(dāng)數(shù)據(jù)庫數(shù)據(jù)已經(jīng)被修改了,但是還是可以從redis中讀出舊數(shù)據(jù),導(dǎo)致數(shù)據(jù)不一致。
  • 第二次刪除則是在修改數(shù)據(jù)庫數(shù)據(jù)后,此時(shí)需要再次刪除redis中對(duì)應(yīng)數(shù)據(jù)一次,這一次是為了刪除 第一次redis刪除和數(shù)據(jù)庫數(shù)據(jù)修改之間,如果有請(qǐng)求,那么舊數(shù)據(jù)又會(huì)重新緩存到redis中,然而數(shù)據(jù)在數(shù)據(jù)庫中在接下來就會(huì)被修改,如果沒有這一次刪除,redis中則會(huì)存在數(shù)據(jù)庫中舊的數(shù)據(jù)。
  • 那么第二次為什么需要在數(shù)據(jù)庫修改后延遲一定時(shí)間再刪除redis呢?
  • 為了等待之前的一次讀取數(shù)據(jù)庫,并等待其數(shù)據(jù)寫入到緩存,最后刪除這次臟數(shù)據(jù),所以是一次數(shù)據(jù)從數(shù)據(jù)庫中發(fā)到服務(wù)器+緩存寫入的時(shí)間

延遲雙刪為什么要延遲

但是延遲雙刪,所延遲的時(shí)間非常的難以確定,所以并不推薦延遲雙刪

根據(jù)綜合考慮,即使先修改數(shù)據(jù)庫,在刪除緩存,有一定的時(shí)間會(huì)導(dǎo)致讀取到舊數(shù)據(jù),這通常是可以被忍受的。
只要及時(shí)將緩存刪除,其他線程就可以讀取到最新的值。

同時(shí)為了保證緩存一定會(huì)被刪除,可以采用mq,來保證緩存會(huì)被刪除

如果在mq中消息沒有被重復(fù)消費(fèi),還會(huì)交由給其他消費(fèi)者消費(fèi)(將緩存刪除)

到此這篇關(guān)于redis緩存延時(shí)雙刪的原因分析的文章就介紹到這了,更多相關(guān)redis緩存延時(shí)雙刪內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • redis-cli登錄遠(yuǎn)程redis服務(wù)并批量導(dǎo)入數(shù)據(jù)

    redis-cli登錄遠(yuǎn)程redis服務(wù)并批量導(dǎo)入數(shù)據(jù)

    本文主要介紹了redis-cli登錄遠(yuǎn)程redis服務(wù)并批量導(dǎo)入數(shù)據(jù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-10-10
  • redis發(fā)布和訂閱_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    redis發(fā)布和訂閱_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要為大家詳細(xì)介紹了redis發(fā)布和訂閱的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • 使用Spring?Boot實(shí)現(xiàn)Redis鍵過期回調(diào)功能示例詳解

    使用Spring?Boot實(shí)現(xiàn)Redis鍵過期回調(diào)功能示例詳解

    這篇文章主要介紹了使用Spring?Boot實(shí)現(xiàn)Redis鍵過期回調(diào)功能,就是一個(gè)實(shí)現(xiàn)Redis鍵過期回調(diào)功能的Spring?Boot應(yīng)用的示例,代碼簡單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • redis?protocol通信協(xié)議及使用詳解

    redis?protocol通信協(xié)議及使用詳解

    這篇文章主要為大家介紹了redis?protocol通信協(xié)議及使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • 基于?Redis?實(shí)現(xiàn)接口限流的方式

    基于?Redis?實(shí)現(xiàn)接口限流的方式

    今天想和小伙伴們聊聊用?Redis?處理接口限流,這也是最近的?TienChin?項(xiàng)目涉及到這個(gè)知識(shí)點(diǎn)了,我就拎出來和大家聊聊這個(gè)話題
    2022-05-05
  • Redis實(shí)現(xiàn)分布式鎖詳解

    Redis實(shí)現(xiàn)分布式鎖詳解

    這篇文章主要介紹了redis如何實(shí)現(xiàn)分布式鎖,文章中有詳細(xì)的示例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2023-04-04
  • Redis內(nèi)存碎片產(chǎn)生原因及Pipeline管道原理解析

    Redis內(nèi)存碎片產(chǎn)生原因及Pipeline管道原理解析

    這篇文章主要為大家介紹了Redis內(nèi)存碎片產(chǎn)生原因及Pipeline管道原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • redis鍵值出現(xiàn)\xac\xed\x00\x05t\x00&的問題及解決

    redis鍵值出現(xiàn)\xac\xed\x00\x05t\x00&的問題及解決

    這篇文章主要介紹了redis鍵值出現(xiàn)\xac\xed\x00\x05t\x00&的問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • 深入理解redis中multi與pipeline

    深入理解redis中multi與pipeline

    pipeline 只是把多個(gè)redis指令一起發(fā)出去,redis并沒有保證這些指定的執(zhí)行是原子的;multi相當(dāng)于一個(gè)redis的transaction的,保證整個(gè)操作的原子性,避免由于中途出錯(cuò)而導(dǎo)致最后產(chǎn)生的數(shù)據(jù)不一致。本文詳細(xì)的介紹,感興趣的可以了解一下
    2021-06-06
  • Redis Cluster原理及配置詳解

    Redis Cluster原理及配置詳解

    這篇文章主要為大家介紹了Redis Cluster原理及配置詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11

最新評(píng)論