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

@CacheEvict注解,清除緩存方式

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

@CacheEvict注解,清除緩存

是用來清除緩存的,有以下屬性:

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

使用1:清除所有緩存

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

默認為false,表示不需要。

當指定了allEntries為true時,Spring Cache將忽略指定的key。

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

? ?@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> ?

一般來說,我們的更新操作只需要刷新緩存中某一個值,所以定義緩存的key值的方式就很重要,最好是能夠唯一,因為這樣可以準確的清除掉特定的緩存,而不會影響到其它緩存值 ,

比如我這里針對用戶的操作,使用(userId+方法名稱)的方式設定key值 ,當然,你也可以找到更適合自己的方式去設定。

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

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

1.value

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

2. allEntries

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

3.beforeInvocation

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

4.condition

這個屬性是指定一個SpEL表達式,只有當該表達式為true時才會清除緩存

5.key

通過SpEL表達式顯示指定緩存的key

eg:

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

6.cacheNames

cache名稱集合,數(shù)據(jù)結構為數(shù)組類型

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

總結

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

相關文章

  • Spring Boot 實現(xiàn)Restful webservice服務端示例代碼

    Spring Boot 實現(xiàn)Restful webservice服務端示例代碼

    這篇文章主要介紹了Spring Boot 實現(xiàn)Restful webservice服務端示例代碼,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-11-11
  • 淺談Java轉(zhuǎn)義符\\|

    淺談Java轉(zhuǎn)義符\\|

    java中\(zhòng)需要用\\來表示吧這個你應該知道,而split中傳入的參數(shù)是什么呢 他并不是普通的字符串 你可以查一下api文檔 它要求傳入的是正則表達式 而正則表達式也需要這個\所以在這里有這個\\
    2015-06-06
  • java實現(xiàn)Api接口加密通信方式

    java實現(xiàn)Api接口加密通信方式

    這篇文章主要介紹了java實現(xiàn)Api接口加密通信方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • MyBatis利用MyCat實現(xiàn)多租戶的簡單思路分享

    MyBatis利用MyCat實現(xiàn)多租戶的簡單思路分享

    這篇文章主要給大家介紹了關于MyBatis利用MyCat實現(xiàn)多租戶的簡單思路的相關資料,文中的多租戶是基于多數(shù)據(jù)庫進行實現(xiàn)的,數(shù)據(jù)是通過不同數(shù)據(jù)庫進行隔離,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-06-06
  • 基于Java實現(xiàn)雙向鏈表

    基于Java實現(xiàn)雙向鏈表

    這篇文章主要為大家詳細介紹了基于Java實現(xiàn)雙向鏈表,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • 一文總結RabbitMQ中的消息確認機制

    一文總結RabbitMQ中的消息確認機制

    RabbitMQ消息確認機制指的是在消息傳遞過程中,發(fā)送方發(fā)送消息后,接收方需要對消息進行確認,以確保消息被正確地接收和處理,本文為大家整理了RabbitMQ中的消息確認機制,需要的可以參考一下
    2023-06-06
  • Spring + Mybatis 項目實現(xiàn)動態(tài)切換數(shù)據(jù)源實例詳解

    Spring + Mybatis 項目實現(xiàn)動態(tài)切換數(shù)據(jù)源實例詳解

    這篇文章主要介紹了Spring + Mybatis 項目實現(xiàn)動態(tài)切換數(shù)據(jù)源的相關資料,需要的朋友參考下吧
    2017-04-04
  • Selenium Webdriver實現(xiàn)截圖功能的示例

    Selenium Webdriver實現(xiàn)截圖功能的示例

    今天小編就為大家分享一篇Selenium Webdriver實現(xiàn)截圖功能的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • java秒殺系統(tǒng)常見問題庫存超賣解決實例分析

    java秒殺系統(tǒng)常見問題庫存超賣解決實例分析

    這篇文章主要為大家介紹了java秒殺系統(tǒng)常見問題庫存超賣解決實例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • 深入詳解java高并發(fā)熱點數(shù)據(jù)更新

    深入詳解java高并發(fā)熱點數(shù)據(jù)更新

    這篇文章主要為大家深入介紹了java高并發(fā)熱點數(shù)據(jù)更新詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04

最新評論