欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

@CacheEvict注解,清除緩存方式

 更新時(shí)間:2023年07月15日 14:31:42   作者:LC超人在良家  
這篇文章主要介紹了@CacheEvict注解,清除緩存方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

@CacheEvict注解,清除緩存

是用來(lái)清除緩存的,有以下屬性:

  • value:緩存位置名稱(chēng),不能為空,同上
  • key:緩存的key,默認(rèn)為空,同上
  • condition:觸發(fā)條件,只有滿(mǎn)足條件的情況才會(huì)清除緩存,默認(rèn)為空,支持SpEL
  • allEntries:true表示清除value中的全部緩存,默認(rèn)為false

使用1:清除所有緩存

allEntries是boolean類(lèi)型,表示是否需要清除緩存中的所有元素。

默認(rèn)為false,表示不需要。

當(dāng)指定了allEntries為true時(shí),Spring Cache將忽略指定的key。

有的時(shí)候我們需要Cache一下清除所有的元素,這比一個(gè)一個(gè)清除元素更有效率。

? ?@CacheEvict(value="users", allEntries=true)
? ?public void delete(Integer id) {
? ? ? System.out.println("delete user by id: " + id);
? ?}

使用1:清除指定key的緩存

? ? //清除掉指定key的緩存 ?
? ? @CacheEvict(value="andCache",key="#user.userId + 'findById'") ?
? ? public void modifyUserRole(SystemUser user) { ?
? ? ? ? ? ? ?System.out.println("hello andCache delete"+user.getUserId()); ?
? ? } ?
? ? //清除掉全部緩存 ?
? ? @CacheEvict(value="andCache",allEntries=true) ?
? ? public final void setReservedUsers(String[] reservedUsers) { ?
? ? ? ? System.out.println("hello andCache deleteall"); ?
? ? }</span> ?

一般來(lái)說(shuō),我們的更新操作只需要刷新緩存中某一個(gè)值,所以定義緩存的key值的方式就很重要,最好是能夠唯一,因?yàn)檫@樣可以準(zhǔn)確的清除掉特定的緩存,而不會(huì)影響到其它緩存值 ,

比如我這里針對(duì)用戶(hù)的操作,使用(userId+方法名稱(chēng))的方式設(shè)定key值 ,當(dāng)然,你也可以找到更適合自己的方式去設(shè)定。

@CacheEvict注解參數(shù)詳解

最近在項(xiàng)目中一直用到@Cacheable和@CacheEvict這兩個(gè)注解來(lái)加緩存和清除緩存,但有時(shí)候會(huì)出現(xiàn)在同一個(gè)事務(wù)中先是清楚了緩存,但是有不在這個(gè)事務(wù)中的方法調(diào)用了查詢(xún),又把更新前的數(shù)據(jù)重新放到緩存里面了,所以就想好好的去研究一下@CacheEvict這個(gè)緩存刪除的注解

1.value

必須屬性,用于指定該方法清除哪個(gè)緩存區(qū)的數(shù)據(jù),默認(rèn)是一個(gè)空的數(shù)組

2. allEntries

這個(gè)屬性是指是否清楚整個(gè)緩存區(qū)

3.beforeInvocation

這個(gè)屬性比較關(guān)鍵,他的意思是是否在執(zhí)行對(duì)應(yīng)方法之前刪除緩存,默認(rèn) false(即執(zhí)行方法之后再刪除緩存),當(dāng)我們遇到需要在執(zhí)行方法前刪除緩存,也就是不管方法執(zhí)行是否成功都需要清除緩存,那我們就可以把beforeInvocation的值改為true

4.condition

這個(gè)屬性是指定一個(gè)SpEL表達(dá)式,只有當(dāng)該表達(dá)式為true時(shí)才會(huì)清除緩存

5.key

通過(guò)SpEL表達(dá)式顯示指定緩存的key

eg:

key = "#warehousePo.guid + ‘a(chǎn)ll'"

6.cacheNames

cache名稱(chēng)集合,數(shù)據(jù)結(jié)構(gòu)為數(shù)組類(lèi)型

我用到的比較多的就是beforeInvocation的使用,因?yàn)楦鶕?jù)不同的業(yè)務(wù)邏輯,會(huì)出現(xiàn)緩存刪除的場(chǎng)景不同,需要慎重考慮設(shè)置為true還是false,文章比較淺,可以大致理解一下各個(gè)參數(shù)的含義。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論