Spring Cache的使用

固然咱們在平時的使用過程過程當中,都是使用redis來作分佈式緩存,並且通常在業務邏輯中,接口這種命中率比較低,並且還要考慮緩存淘汰算法的選取,因此通常應用很少。可是spring既然有這麼個功能,咱們就來看看,這裏參照前輩的Spring5-Design-Patterns來寫這篇博客。html

這裏須要使用@EnableCaching註解來開啓緩存,而後之類還須要一個緩存管理器,這裏使用ConcurrentMapCacheManager,這個實現後續再看。git

這裏再使用@CachePut("accountCache")來標記這個緩存,可是我看這裏面的註解選項,好像沒有緩存時間,而後咱們就可使用啦github

輸出:redis

可供選擇的有這些,簡單介紹三種:算法

  • value (也可以使用 cacheNames) : 可看作命名空間,表示存到哪一個緩存裏了。
  • key : 表示命名空間下緩存惟一key,使用Spring Expression Language(簡稱SpEL,詳見參考文獻[5])生成。
  • condition : 表示在哪一種狀況下才緩存結果(對應的還有unless,哪一種狀況不緩存),一樣使用SpEL

這裏主要使用的有三個註解:spring

@Cacheable 主要針對方法配置。可以依據方法的請求參數對其結果進行緩存
@CachePut  主要針對方法配置,可以依據方法的請求參數對其結果進行緩存,和 @Cacheable 不一樣的是,它每次都會觸發真實方法的調用
@CachEvict  主要是用來標註在須要清除緩存元素的方法或類上的。當標記在一個類上時表示其中全部的方法的執行都會觸發緩存的清除操做緩存

這裏能夠知道第二次查詢的時候,是從緩存中取的,這裏的依賴有:less

感受可供選擇的仍是比較少的,不是特別實用,在複雜的業務場景前。分佈式

參考:htm

git@github.com:PacktPublishing/Spring5-Design-Patterns.git

http://www.javashuo.com/article/p-yfruwgfl-dm.html

相關文章
相關標籤/搜索