資料庫快取如何保證一致性

2021-10-05 07:16:54 字數 293 閱讀 7388

先新資料庫再更新快取。問題:更新資料庫後,更新快取時,如果資料庫資料又變更了,那快取裡就更新成髒資料了。

先刪除快取,然後再更新資料庫。刪除快取後,進行更新資料庫時,如果乙個請求來了,它在快取中沒命中,就會去資料庫中查詢,並把查到的資料更新到快取裡,隨後資料庫才更新完畢,這就導致快取裡的資料又成為髒資料了,而且會一直髒下去。

先更新資料庫,成功後,讓快取失效。只有當讀快取時,資料庫又進行了寫,才會導致快取裡存入髒資料,但一般情況下資料庫的寫操作是比讀操作慢的,所以發生這種問題的機率並不高。(可以通過2pc或是paxos協議保證一致性解決)

快取與資料庫一致性保證

本文主要討論這麼幾個問題 1 啥時候資料庫和快取中的資料會不一致 2 不一致優化思路 3 如何保證資料庫與快取的一致性 當資料發生變化時,先淘汰快取,再修改資料庫 這個點是大家討論的最多的。上篇文章得出這個結論的依據是,由於操作快取與運算元據庫不是原子的,非常有可能出現執行失敗。假設先寫資料庫,再淘...

如何保證快取與資料庫資料一致性

重點文章 你只要用快取,就可能會涉及到快取與資料庫雙儲存雙寫,你只要是雙寫,就一定會有資料一致性的問題,那麼你如何解決一致性問題?一般來說,就是如果你的系統不是嚴格要求快取 資料庫必須一致性的話,快取可以稍微的跟資料庫偶爾有不一致的情況,最好不要做這個方案,讀請求和寫請求序列化,串到乙個記憶體佇列裡...

redis如何保證快取與資料庫的一致性

redis怎麼保證快取與資料庫的一致性 為啥會不一致 先操作快取,在寫資料庫成功之前,如果有讀請求發生,可能導致舊資料入快取,引發資料不一致。資料庫有資料,快取沒有資料 資料庫有資料,快取也有資料,資料不相等 資料庫沒有資料,快取有資料。首先嘗試從快取讀取,讀到資料則直接返回 如果讀不到,就讀資料庫...