WEB快取 如何解決快取的一致性

2021-08-13 06:40:52 字數 1302 閱讀 1103

目的

保證資料庫資料和快取資料的一致性

乙個總的原則: 一旦資料庫更新了,就把原來的快取失效掉

1:資料庫資料更新後,同步更新/失效掉舊的快取資料

2:查詢資料後回寫快取

3:當快取資料與資料庫資料不一致時,有後台admin介面可以清掉業務快取

4:保證查詢不到快取時業務邏輯的正確性

5:每天的定時任務全域性更新業務快取(半夜)

6:盡可能給所有快取設定過期時間

7:靠**review,保證資料修改邏輯的正確性

關於折衷的問題

假設有乙個資料,它更新頻繁,訪問量很高,我們將其快取,但是由於更新頻繁,所以可能頻繁觸發清快取操作,這樣快取實際上就成了擺設。如果業務允許,我們不需要每次都清快取,簡而言之,就是允許系統存在一小段時間的資料顯示不一致的情況。(實時更新資料庫,定時重新整理快取)

寫完資料庫後是馬上更新快取還是直接刪除快取

如果寫資料庫的值與更新到快取值是一樣的,不需要經過任何計算,可以馬上更新快取

如果寫資料庫的值與更新快取的值不一致,寫入快取中的資料需要經過幾個表的關聯計算後將得到的結果插入快取,那就沒必要馬上更新快取,只要刪除快取即可,等到查詢的時候把計算後得到的結果插入到快取中即可。

所以一般的策略是當更新資料時,先刪除快取資料,然後更新資料庫,而不是更新快取,等要查詢的時候才把最新的資料更新到快取

先更新資料庫還是先刪除快取

誰先誰後都有可能出現問題()

頁面靜態化

以上說的快取,都是資料快取,還有一種更加高階的快取,即把動態頁面(如jsp)進行靜態化處理,這個比資料快取複雜的多。目前有一些開源的框架可以支援,比如

varnish

,效能很高,當然學習成本也很高。關於

varnish

快取一致性解決

根據上一章的學習,我們現在就可以用redisson框架來解決分布式鎖的問題,進行修改獲取 二級分類 如下 todo 產生堆外記憶體溢位異常 outofdirectmemoryeror override public map getcatalogjson map result json.parseob...

快取一致性

一般應用而言,追求的都是快取的最終一致性。一般的快取系統,都是按照key去快取查詢,如果不存在對應的value,就應該去後端系統查詢 比如db 如果key對應的value是一定不存在的,並且對該key併發請求量很大,就會對後端系統造成很大的壓力。這就叫做快取穿透。引起這個問題的主要原因還是高併發的時...

快取一致性

計算機體系結構量化研究方法 第五版 學習筆記 快取一致性 1 快取一致性的問題 2 儲存器一致性的概念 3 一致性的基本實現方案 大型 多級快取可以充分降低處理器對儲存頻寬的需求。採用對稱共享儲存器的計算機通常支援對共享資料與專用資料的快取。多處理器之間的通訊基本上是通過讀寫共享資料實現。為了降低訪...