SpringBoot整合redis使用緩存注解詳解
1.啟動(dòng)類標(biāo)明@EnableCaching
@SpringBootApplication
@MapperScan("com.jx.luckyDraw.mapper")
@EnableCaching
public class LuckyDrawApplication {
public static void main(String[] args) {
SpringApplication.run(LuckyDrawApplication.class, args);
}
}
2.常用注解的種類
@Cacheable
@CachePut
@CacheEvict
2.1 作用
- @Cacheable:在方法執(zhí)行前判斷對(duì)應(yīng)緩存是否存在,如果存在直接返回緩存結(jié)果,否者執(zhí)行方法將結(jié)果緩存,適用于查詢類。
- @CachePut:與@Cacheable不同的是@CachePut一定會(huì)執(zhí)行方法,并將方法的返回值更新到緩存,適用于更新,插入。
- @CacheEvict:清除緩存。
2.2 例子
@Cacheable
@Cacheable(cacheNames = "drawDetails", key = "#userId + ':' + #batchId", unless = "#result ==null")
public DrawDetailPO getDrawDetails(String userId, Long batchId) {
當(dāng)getDrawDetails方法的返回值不為null時(shí),將方法的執(zhí)行結(jié)果按照#userId + ‘:’ + #batchId 的方式緩存到redis中。
redis中鍵名為:
drawDetails::81466011bd2a7cf40502a08827038390:1490935513660657664
@CacheEvict
@CacheEvict(value = {"drawBatch", "drawDetails"}, allEntries = true, condition = "#result > 0")
@Override
public int newDrawBatchInfo(Integer batchCount) {
當(dāng)newDrawBatchInfo方法的返回值大于0時(shí),將命名空間為drawBatch" 或者drawDetails的鍵全部刪除。
allEntries 默認(rèn)為false,當(dāng)有多個(gè)鍵時(shí)必須配置true才能刪除。
在這種沒指定key,使用默認(rèn)keyGenerator 時(shí),必須使用allEntries =true才能刪除
@Cacheable(cacheNames = "employeeSelectList", unless = "#result ==null")
public List<HrmEmployeeSelectVO> querySelectList(HrmEmployeeSelectVO employeeSelectVO) {
return employeeMapper.querySelectList(employeeSelectVO);
}
@CacheEvict(value = "employeeSelectList",allEntries = true,condition = "#result = true ")
beforeInvocation 屬性:是否在方法執(zhí)行前刪除,默認(rèn)為false。
到此這篇關(guān)于SpringBoot整合redis使用緩存注解詳解的文章就介紹到這了,更多相關(guān)SpringBoot整合redis內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringBoot整合Redis實(shí)現(xiàn)token緩存
- SpringBoot結(jié)合Redis實(shí)現(xiàn)緩存管理功能
- SpringBoot+MyBatis+Redis實(shí)現(xiàn)分布式緩存
- springboot使用redis注解做緩存的基本操作方式
- SpringBoot中Redis的緩存更新策略詳解
- springboot整合ehcache和redis實(shí)現(xiàn)多級(jí)緩存實(shí)戰(zhàn)案例
- SpringBoot結(jié)合Redis實(shí)現(xiàn)緩存
- SpringBoot使用Redis實(shí)現(xiàn)分布式緩存
- SpringBoot中的Redis?緩存問題及操作方法
- SpringBoot3.0集成Redis緩存的實(shí)現(xiàn)示例
相關(guān)文章
淺談JAVA版本號(hào)的問題 Java版本號(hào)與JDk版本
這篇文章主要介紹了淺談JAVA版本號(hào)的問題 Java版本號(hào)與JDk版本,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-08-08
Java實(shí)現(xiàn)字符串解析為日期時(shí)間的方法示例
這篇文章主要介紹了Java實(shí)現(xiàn)字符串解析為日期時(shí)間的方法,結(jié)合具體實(shí)例形式分析了java日期時(shí)間字符串的解析操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-04-04
Java的Finalizer引發(fā)的內(nèi)存溢出問題及解決
本文介紹了Java中的Finalizer機(jī)制,解釋了當(dāng)類實(shí)現(xiàn)finalize()方法時(shí),JVM的行為和潛在的風(fēng)險(xiǎn),通過一個(gè)示例程序,展示了實(shí)現(xiàn)finalize()方法會(huì)導(dǎo)致大量對(duì)象存活,最終引發(fā)OutOfMemoryError,文章分析了GC日志,解釋了Finalizer線程和主線程之間的競(jìng)爭(zhēng)2025-03-03
使用Spring AntPathMatcher的doMatch方法
這篇文章主要介紹了使用Spring AntPathMatcher的doMatch方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09
淺談為什么Java中1000==1000為false而100==100為true
這篇文章主要介紹了淺談為什么Java中1000==1000為false而100==100為true,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
一文詳解Elasticsearch和MySQL之間的數(shù)據(jù)同步問題
Elasticsearch中的數(shù)據(jù)是來自于Mysql數(shù)據(jù)庫的,因此當(dāng)數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行增刪改后,Elasticsearch中的數(shù)據(jù),索引也必須跟著做出改變。本文主要來和大家探討一下Elasticsearch和MySQL之間的數(shù)據(jù)同步問題,感興趣的可以了解一下2023-04-04
Java中ArrayList與順序表的定義與實(shí)現(xiàn)方法
ArrayList是一個(gè)實(shí)現(xiàn)List接口的類,底層是動(dòng)態(tài)類型順序表,本質(zhì)也就是數(shù)組,動(dòng)態(tài)主要體現(xiàn)在它的擴(kuò)容機(jī)制,下面這篇文章主要給大家介紹了關(guān)于Java中ArrayList與順序表的定義與實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下2022-07-07

