javascript
SpringBoot使用@Cacheable实现最简单的Redis缓存
前言
之前我們使用過RedisTemplate來實現redis緩存,然后使用工具類來實現操作redis的存儲。這樣的方式好處是很自由,但是還不是最簡單的處理方式。對于一些簡單的應用來說,其實redis的緩存應用很簡單,只需要存儲和取出就可以了。
于是Spring提供了@Cacheable注解來實現,非常easy
?
操作步驟
1、啟動類上需要加@EnableCaching注解
2、在需要執行緩存的類上面寫上緩存前綴名稱
@CacheConfig(cacheNames="user")
3、在查詢方法上使用@Cacheable(key = "'list'")配置鍵的名稱
4、在修改方法上使用@CachePut(key = "'list'")配置鍵的名稱
然后就可以了?對,就可以了。
當調用查詢方法的時候,首先就會去redis里面看是否有相應的對象,如果有就直接從緩存中取,不會走下面的查詢方法,如果沒有就會進行查詢并將查詢后的數據存放到redis中。
?
整體代碼
https://github.com/LinkinStars/springBootTemplate
具體緩存方法在UserCacheServiceImpl中

?
測試步驟
第一次調用查詢
http://127.0.0.1:8080/cache/user/list
就會在控制臺中看到相應輸出“調用了方法,沒有從redis取”
第二次調用查詢,就會發現控制臺沒有相應輸出了,證明是直接從緩存中獲取的數據。
調用添加方法會操作緩存進行更新
http://127.0.0.1:8080/cache/user/add
調用刪除方法,因為沒有添加CachePut注解所以緩存數據并不會更新
http://127.0.0.1:8080/cache/user/delete
使用查詢之后數據還是原來的數據并沒有改變
?
注意事項
1、需要緩存的對象必須可以被序列化
2、查詢和修改返回的對象一定要相同,否則會報錯。
3、cacheNames可以配置在Cacheable和CachePut中,配置在CacheConfig中更加方便。
4、key可以根據入參和EL表達式來設置如:key="#user.id"
5、Cacheable中condition參數可以設置當滿足一定條件之后才會使用緩存
?
總結
1、這個緩存寫法用法非常簡單,用起來很舒服,不需要什么很復雜的配置
2、如果你只是緩存一些小東西,不需要對緩存進行一些特殊操作,比如緩存一些首頁廣告信息等等,那還是很方便的。
3、如果你需要對你的緩存進行很復雜的控制,緩存一些商品具體信息,并且還需要對緩存設置過期時間等等,那么這樣的方式就不能很好的滿足了,還是老老實實使用RedisTemplate來做吧。
其他用法可以參考:https://www.baeldung.com/spring-cache-tutorial
?
總結
以上是生活随笔為你收集整理的SpringBoot使用@Cacheable实现最简单的Redis缓存的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HDU 5531 Rebuild
- 下一篇: jmeter之调度器配置