最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

redis緩存延時雙刪的原因分析

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

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

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

延時雙刪是什么?

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

采用反證法

只先刪

????

在這里插入圖片描述

只后刪

在這里插入圖片描述

結(jié)論

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

思考2:為啥是延時

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

在這里插入圖片描述

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

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

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

延遲雙刪為什么要延遲

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

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

同時為了保證緩存一定會被刪除,可以采用mq,來保證緩存會被刪除

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

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

相關(guān)文章

  • Redisson分布式鎖解鎖異常問題

    Redisson分布式鎖解鎖異常問題

    文章主要描述了在使用Redisson進行分布式鎖操作時,遇到的`IllegalMonitorStateException`異常,通過分析報錯信息,作者發(fā)現(xiàn)了問題的根源在于線程嘗試解鎖但未按順序執(zhí)行,作者提出了兩種解決方案:在解鎖前增加判斷,確保線程已獲得鎖
    2024-12-12
  • Govern Service 基于 Redis 的服務(wù)治理平臺安裝過程詳解

    Govern Service 基于 Redis 的服務(wù)治理平臺安裝過程詳解

    Govern Service 是一個輕量級、低成本的服務(wù)注冊、服務(wù)發(fā)現(xiàn)、 配置服務(wù) SDK,通過使用現(xiàn)有基礎(chǔ)設(shè)施中的 Redis 不用給運維部署帶來額外的成本與負擔,接下來通過本文給大家分享Govern Service 基于 Redis 的服務(wù)治理平臺的相關(guān)知識,感興趣的朋友一起看看吧
    2021-05-05
  • Python交互Redis的實現(xiàn)

    Python交互Redis的實現(xiàn)

    本文主要介紹了Python交互Redis的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • Redis數(shù)據(jù)類型超詳細講解分析

    Redis數(shù)據(jù)類型超詳細講解分析

    Redis是一個開源的內(nèi)存數(shù)據(jù)結(jié)構(gòu)存儲系統(tǒng),可以用作數(shù)據(jù)庫、緩存和消息中間件,本文詳細介紹了Redis的各個數(shù)據(jù)類型、內(nèi)部編碼以及一些高級功能,如Geo、HyperLogLog和Stream,需要的朋友可以參考下
    2024-12-12
  • Redis整合Spring結(jié)合使用緩存實例

    Redis整合Spring結(jié)合使用緩存實例

    這篇文章主要介紹了Redis整合Spring結(jié)合使用緩存實例,介紹了如何在Spring中配置redis,并通過Spring中AOP的思想,將緩存的方法切入到有需要進入緩存的類或方法前面。需要的朋友可以參考下
    2015-12-12
  • 基于Redis延遲隊列的實現(xiàn)代碼

    基于Redis延遲隊列的實現(xiàn)代碼

    在生活中很多時候都會用到延遲隊列,本文基于Redis延遲隊列的實現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • redis分布式鎖的8大坑總結(jié)梳理

    redis分布式鎖的8大坑總結(jié)梳理

    這篇文章主要介紹了redis分布式鎖的8大坑總結(jié)梳理,使用redis的分布式鎖,我們首先想到的可能是setNx命令,文章圍繞setNx命令展開詳細的內(nèi)容介紹,感興趣的小伙伴可以參考一下
    2022-07-07
  • 深入理解redis_memcached失效原理(小結(jié))

    深入理解redis_memcached失效原理(小結(jié))

    這篇文章主要介紹了深入理解redis_memcached失效原理(小結(jié)),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • Redis中的配置文件,數(shù)據(jù)持久化,事務(wù)

    Redis中的配置文件,數(shù)據(jù)持久化,事務(wù)

    這篇文章主要介紹了Redis中的配置文件,數(shù)據(jù)持久化,事務(wù)問題,具有很好的參考價值,希望對大家有所幫助。
    2022-12-12
  • Spring?Boot實戰(zhàn)解決高并發(fā)數(shù)據(jù)入庫之?Redis?緩存+MySQL?批量入庫問題

    Spring?Boot實戰(zhàn)解決高并發(fā)數(shù)據(jù)入庫之?Redis?緩存+MySQL?批量入庫問題

    這篇文章主要介紹了Spring?Boot實戰(zhàn)解決高并發(fā)數(shù)據(jù)入庫之?Redis?緩存+MySQL?批量入庫問題,本文通過圖文實例相結(jié)合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02

最新評論

凯里市| 广汉市| 临江市| 柳河县| 长武县| 禄丰县| 大石桥市| 鹤庆县| 台湾省| 吉林省| 瑞金市| 阳朔县| 永寿县| 喀什市| 洛浦县| 河西区| 东港市| 巴彦县| 南京市| 登封市| 吉安县| 万安县| 四平市| 凤山市| 旅游| 永平县| 兴海县| 玛纳斯县| 南投县| 南宫市| 黄龙县| 息烽县| 宁德市| 廊坊市| 洛浦县| 虞城县| 静乐县| 班戈县| 东方市| 收藏| 阳信县|