應用級快取的工作流程以及Spring Boot快取原理分析
快取是解決高併發、大流量資料操作效能問題的利器。快取一般分為系統級快取和應用級快取,系統級快取是由作業系統提供的快取,不是此處討論的內容,本文主要是闡述應用級快取的工作流程以及Spring Boot快取原理分析。
本文提到的快取是指應用級快取,應用級快取與開發者的架構設計息息相關,例如一個線上使用者量很大的網站,隨著資料量的增大、訪問的集中,就會出現後臺持久化儲存負擔加重、資料庫響應惡化、網站顯示延遲等重大影響。而快取就成為解決或優化這些效能問題的關鍵。應用級快取工作流程如下:

應用級快取的工作流程
應用級快取的工作流程可以概括為以下三個步驟:
第一步:應用程式從非持久化快取系統(例如Redis)中查詢資料,若在非持久化快取系統中命中查詢結果,則直接返回快取中的資料。
第二步:若果未命中查詢結果,則在持久化儲存系統中進行查詢,並將查詢結果返回。
第三步:系統依照更新策略和週期,重新整理非持久化快取系統中的資料,使之與持久化儲存資料保持同步。
很多開發人員基於上述原理設計自己的快取機制。但對於Spring Boot開發人員而言是沒有必要的,Spring Boot本身就提供快取(Cache)支援,其使用方法和原理都類似於Spring對事務管理的支援。
Spring Cache是作用在方法上的,其核心思想是這樣的:當我們在呼叫一個快取方法時會把該方法引數和返回結果作為一個鍵值對存放在快取中,等到下次利用同樣的引數來呼叫該方法時將不再執行該方法,而是直接從快取中獲取結果進行返回。所以在使用Spring Cache的時候我們要保證我們快取的方法對於相同的方法引數要有相同的返回結果。
開發人員使用Spring Cache編寫程式,僅僅需要兩步:一是宣告某些方法使用快取;二是配置Spring對Cache的支援。Spring Boot為我們提供了幾個註解來支援Spring Cache快速開發。其核心主要是@Cacheable和@CacheEvict註解。使用@Cacheable標記的方法在執行後Spring Cache將快取其返回結果,而使用@CacheEvict標記的方法會在方法執行前或者執行後移除Spring Cache中的某些元素。