當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
Springboot整合缓存
生活随笔
收集整理的這篇文章主要介紹了
Springboot整合缓存
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
JSR107
Java Cashing定義了5個核心接口,分別是
- CashingProvider定義了創建、配置、獲取、管理和控制多個CashManager。一個應用可以在運行期間訪問多個CashingProvider
- CashManager定義了創建、配置、獲取、管理和控制多個唯一命名的Cashe,這些Cache存在于CasheManager的上下文中,一個CacheManager僅僅被一個CashingProvider所擁有
- Cache是一個類似Map的數據結構并臨時存儲以key為索引的值。一個Cache僅僅被一個Cachemanager擁有
- Entry是一個存儲在Cache中的key-value對
- Expiry每一個存儲在Cache中的條目有一個定義的有效期,條目將變為過期狀態,只要過期,條目將不可訪問、更新和刪除。可以通過ExpiryPolicy設置緩存有效期
他們之間的關系如下圖所示
Spring保留了CacheManager和Cache來簡化開發。CacheManager來管理Cache,Cache來執行增刪改查等具體功能
幾個重要的概念和緩存注解
@Cacheable具體內容講解
- 將方法的運行結果進行緩存;以后要再相同的數據,直接從緩存中獲取數據,不再調用方法
- CacheManager管理多個Cache組件,對于緩存的操作都是在Cache組件中,每一個緩存主鍵都有自己唯一一個名字;
- CacheNames/Value:指定緩存主鍵的名字
- key:緩存數據使用的key,用它指定,默認是使用方法的參數值,value是方法的返回值
- keyGenerator:key的生成器,我們可以自己指定key生成器的組件id;但是只可以二選一使用
- cacheManager:指定緩存的管理器,或者cacheResolver指定獲取解析器
- condition:指定符合條件的情況下,才緩存
- unless:否定緩存,當unless指定的條件為true,方法的返回值就不會被緩存,可以獲取到結果進行判斷unless = “#result == null”
- sync:是否使用異步模式
?
機制
1,自動配置類CacheCacheAutoConfigConfiguration
2,緩存的配置類
3,哪個配置類生效呢?根據配置規則,如果匹配成功,顯示matched;否則顯示did not match
4,如果匹配,給容器注冊了一個CacheManager
5,可以獲取和創建ConcurrentMapCache類型的緩存主鍵,它將數據保存在ConcurrentMap中
使用緩存的運行流程
@Cacheable標注的方法執行之前先來檢查緩存中有沒有這個數據,默認按照參數的key去查詢緩存,如果沒有就將運行方法放入緩存,以后再次調用,就可以直接使用緩存中的數據
@CachePut
- 既調用方法,又更新緩存(同步同步緩存,前提是取和放的key是同一個key)
- 修改了數據庫的每個數據,同時更新緩存
1,先調用方發
2,將目標的緩存更新到數據庫
@Cacheable不能使用#result取回返回結果
@CacheEvict
@Caching可以配置多個復雜規則
- cachable
- put
- evict
總結
以上是生活随笔為你收集整理的Springboot整合缓存的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎样提取住房公积金里面的钱 如何提取公积
- 下一篇: SpringMVC自动配置