本文小編為大家詳細(xì)介紹“redis緩存延時(shí)雙刪指的是什么”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“redis緩存延時(shí)雙刪指的是什么”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來(lái)學(xué)習(xí)新知識(shí)吧。
我們提供的服務(wù)有:成都做網(wǎng)站、網(wǎng)站建設(shè)、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、樂(lè)陵ssl等。為上千家企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢(xún)和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的樂(lè)陵網(wǎng)站制作公司
如果是更新,存在分布式事務(wù)問(wèn)題,可能出現(xiàn)修改了緩存,數(shù)據(jù)庫(kù)修改失敗的情況。只是刪除緩存的話(huà),就算數(shù)據(jù)庫(kù)修改失敗,下次查詢(xún)會(huì)直接取數(shù)據(jù)庫(kù)的數(shù)據(jù),也不會(huì)出現(xiàn)臟數(shù)據(jù)。
就是在增刪改某實(shí)體類(lèi)的時(shí)候,要對(duì)該實(shí)體類(lèi)的緩存進(jìn)行清空,清空的位置在數(shù)據(jù)庫(kù)操作方法的前后。
只先刪
只后刪
從而得出 前刪和后刪都有問(wèn)題。所以采用延時(shí)雙刪的策略
依然是反證法。下圖這情況是雙刪依然存在舊緩存的情況,延時(shí)是確保 修改數(shù)據(jù)庫(kù)-》清空緩存前,其他事務(wù)的更改緩存操作已經(jīng)執(zhí)行完。
補(bǔ)充:為什么要延遲雙刪,來(lái)保證緩存一致性
為什么要延遲雙刪,來(lái)保證緩存一致性
在修改數(shù)據(jù)庫(kù)數(shù)據(jù)前,需要先刪除一次redis:此時(shí)是為了保證在數(shù)據(jù)庫(kù)數(shù)據(jù)修改和redis數(shù)據(jù)被刪除的間隔時(shí)間內(nèi),如有命中,保證此數(shù)據(jù)也不存在redis中。如果沒(méi)有這一次刪除,當(dāng)數(shù)據(jù)庫(kù)數(shù)據(jù)已經(jīng)被修改了,但是還是可以從redis中讀出舊數(shù)據(jù),導(dǎo)致數(shù)據(jù)不一致。
第二次刪除則是在修改數(shù)據(jù)庫(kù)數(shù)據(jù)后,此時(shí)需要再次刪除redis中對(duì)應(yīng)數(shù)據(jù)一次,這一次是為了刪除 第一次redis刪除和數(shù)據(jù)庫(kù)數(shù)據(jù)修改之間,如果有請(qǐng)求,那么舊數(shù)據(jù)又會(huì)重新緩存到redis中,然而數(shù)據(jù)在數(shù)據(jù)庫(kù)中在接下來(lái)就會(huì)被修改,如果沒(méi)有這一次刪除,redis中則會(huì)存在數(shù)據(jù)庫(kù)中舊的數(shù)據(jù)。
那么第二次為什么需要在數(shù)據(jù)庫(kù)修改后延遲一定時(shí)間再刪除redis呢?
為了等待之前的一次讀取數(shù)據(jù)庫(kù),并等待其數(shù)據(jù)寫(xiě)入到緩存,最后刪除這次臟數(shù)據(jù),所以是一次數(shù)據(jù)從數(shù)據(jù)庫(kù)中發(fā)到服務(wù)器+緩存寫(xiě)入的時(shí)間
根據(jù)綜合考慮,即使先修改數(shù)據(jù)庫(kù),在刪除緩存,有一定的時(shí)間會(huì)導(dǎo)致讀取到舊數(shù)據(jù),這通常是可以被忍受的。
只要及時(shí)將緩存刪除,其他線(xiàn)程就可以讀取到最新的值。
如果在mq中消息沒(méi)有被重復(fù)消費(fèi),還會(huì)交由給其他消費(fèi)者消費(fèi)(將緩存刪除)
讀到這里,這篇“redis緩存延時(shí)雙刪指的是什么”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過(guò)才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。