緩存更新的套路


緩存更新的套路

更新緩存的Design Pattern有四種:Cache aside,Read through,Write through,Write behind caching

Cache Aside Pattern

這是最常用最常用的pattern了,其具體邏輯如下:

  • 失效:應用程序先從cache取數據,沒有得到,則從數據庫中取數據,成功后,放到緩存中
  • 命中:應用程序從cache中取數據,取到后返回
  • 更新:先把數據存到數據庫中,成功后,再讓緩存失效

Read/Write Through Pattern

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

Read Through

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

Write Through

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

Write Behind Caching Pattern

Write Behind又叫Write Back。一些了解Linux操作系統內核的同學對write back應該非常熟悉,這不就是linux文件系統的Page Cache的算法嗎?Write Back套路,一句話就是,在更新數據的時候,只更新緩存,不更新數據庫,而我們的緩存會異步地批量更新緩存庫。這個設計的好處就是讓數據的IO操作飛快無比(因為直接操作內存嗎),因為異步,write backg還可以額合並對同一個數據的多次操作,所以性能的提高是相當可觀的。

轉載:http://coolshell.cn/articles/17416.html


免責聲明!

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



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