緩存更新的幾種方法


最近做項目遇到了與緩存有關的問題,緩存的更新是一個值得深入研究的操作。

看了網上好多的思路,往往都是先刪除緩存,再去從數據庫讀取,這樣的結果很有可能會導致數據不一致,查了一些資料,找到了“耗子叔”的文章,闡述了緩存更新的幾種方法

 

Cache Aside

  • 失效:應用程序先從cache中取數據,沒取到就去數據庫中找,成功后放入緩存
  • 命中:從cache中直接返回
  • 更新:先把更新數據庫,成功后,再讓緩存失效

 

Read/Write Through Pattern

我們可以看到,在上面的Cache Aside套路中,我們的應用代碼需要維護兩個數據存儲,一個是緩存(Cache),一個是數據庫(Repository)。所以,應用程序比較啰嗦。而Read/Write Through套路是把更新數據庫(Repository)的操作由緩存自己代理了,所以,對於應用層來說,就簡單很多了。可以理解為,應用認為后端就是一個單一的存儲,而存儲自己維護自己的Cache。

Read Through

Read Through 套路就是在查詢操作中更新緩存,也就是說,當緩存失效的時候(過期或LRU換出),Cache Aside是由調用方負責把數據加載入緩存,而Read Through則用緩存服務自己來加載,從而對應用方是透明的。

Write Through

Write Through 套路和Read Through相仿,不過是在更新數據時發生。當有數據更新的時候,如果沒有命中緩存,直接更新數據庫,然后返回。如果命中了緩存,則更新緩存,然后再由Cache自己更新數據庫(這是一個同步操作)

 

Write Behind Caching Pattern

這個不是太了解,可以參考耗子叔文章

 

參考文章:https://coolshell.cn/articles/17416.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM