最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

@Cacheable、@CachePut和@CacheEvict三個注解的使用及區(qū)別

 更新時間:2026年05月21日 10:07:07   作者:dushky  
@Cacheable、@CachePut和@CacheEvict是Spring框架中的核心緩存注解,分別用于查詢、更新和刪除緩存操作,@Cacheable在緩存命中時跳過方法執(zhí)行;@CachePut強制執(zhí)行并更新緩存;@CacheEvict刪除或清空緩存,注意事項包括鍵的一致性、事務處理和條件過濾等

在 Spring 框架中,@Cacheable@CachePut 和 @CacheEvict 是三個與緩存管理相關(guān)的核心注解,它們與 Redis 等緩存中間件結(jié)合使用時,可以顯著提升應用性能。

以下是它們的核心區(qū)別和適用場景:

@Cacheable

作用

在方法執(zhí)行前檢查緩存,如果緩存中存在對應結(jié)果,直接返回緩存值,跳過方法執(zhí)行;若不存在,則執(zhí)行方法并將返回值存入緩存。

適用場景

  • 查詢操作(例如根據(jù) ID 查詢用戶信息)。
  • 適用于結(jié)果穩(wěn)定、不頻繁變更的數(shù)據(jù)。

關(guān)鍵參數(shù)

  • value/cacheNames:緩存名稱(如 "users")。
  • key:緩存的鍵(支持 SpEL 表達式)。
  • condition/unless:緩存條件(如 condition="#id > 10")。

示例

@Cacheable(value = "users", key = "#id")
public User getUserById(Long id) {
    // 查詢數(shù)據(jù)庫
    return userRepository.findById(id);
}

@CachePut

作用

無論緩存是否存在,始終執(zhí)行方法,并將返回值更新到緩存中。適用于需要強制刷新緩存的場景。

適用場景

  • 更新操作(例如修改用戶信息后同步更新緩存)。
  • 需要確保緩存與數(shù)據(jù)庫數(shù)據(jù)一致。

關(guān)鍵參數(shù)

與 @Cacheable 相同,但需確保 key 的生成邏輯與 @Cacheable 一致,否則可能導致緩存不一致。

示例

@CachePut(value = "users", key = "#user.id")
public User updateUser(User user) {
    // 更新數(shù)據(jù)庫
    userRepository.update(user);
    return user; // 更新后的結(jié)果存入緩存
}

@CacheEvict

作用

刪除指定緩存條目或清空整個緩存。支持在方法調(diào)用觸發(fā)。

適用場景

  • 刪除操作(例如刪除用戶后清除緩存)。
  • 數(shù)據(jù)變更后需要清理舊緩存(如批量更新后清空列表緩存)。

關(guān)鍵參數(shù)

  • allEntries:是否清空整個緩存(默認為 false,僅刪除 key 對應的條目)。
  • beforeInvocation:是否在方法執(zhí)行前刪除緩存(默認為 false,方法執(zhí)行后刪除)。

示例

@CacheEvict(value = "users", key = "#id")
public void deleteUser(Long id) {
    userRepository.deleteById(id);
}

// 清空整個緩存
@CacheEvict(value = "users", allEntries = true)
public void refreshAllUsers() {
    // 無需實際邏輯,僅觸發(fā)緩存清理
}

三者的核心區(qū)別

注解是否執(zhí)行方法體緩存行為典型場景
@Cacheable緩存命中時跳過讀取緩存或?qū)懭胄陆Y(jié)果查詢(冪等操作)
@CachePut始終執(zhí)行強制更新緩存更新(非冪等)
@CacheEvict通常執(zhí)行刪除緩存條目或清空整個緩存刪除或清理緩存

注意事項

鍵的一致性

@Cacheable 和 @CachePut 的 key 生成邏輯必須一致,否則更新后可能無法覆蓋舊緩存。

事務與緩存的順序

默認情況下,緩存操作在方法執(zhí)行后觸發(fā)。若方法有事務,需確保緩存操作在事務提交后執(zhí)行(可通過 @Transactional 配置)。

條件過濾

使用 condition 和 unless 避免緩存無效數(shù)據(jù)(如 unless="#result == null")。

分布式鎖

在高并發(fā)場景下,結(jié)合分布式鎖(如 Redis 的 RedLock)避免緩存擊穿或雪崩。

總結(jié)

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

相關(guān)文章

  • IDEA快速搭建jsp項目的圖文教程

    IDEA快速搭建jsp項目的圖文教程

    這篇文章主要介紹了IDEA快速搭建jsp項目的圖文教程,本文分步驟通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-05-05
  • 淺析Spring4新特性概述

    淺析Spring4新特性概述

    Spring 4.1并沒有特別吸引眼球的地方,主要還是增強和一些依賴的版本升級。本文重點給大家介紹Spring4新特性概述,感興趣的朋友一起看看吧
    2017-09-09
  • JVM與操作系統(tǒng)之間的關(guān)系詳解

    JVM與操作系統(tǒng)之間的關(guān)系詳解

    JVM與操作系統(tǒng)之間是依賴與被依賴的關(guān)系,JVM依賴于操作系統(tǒng)提供的資源和服務,同時JVM也起到了抽象與隔離的作用,為Java程序提供了一個統(tǒng)一的、與平臺無關(guān)的運行環(huán)境,提高了Java程序的安全性
    2025-03-03
  • Java實現(xiàn)Html保存為.mhtml文件的代碼邏輯

    Java實現(xiàn)Html保存為.mhtml文件的代碼邏輯

    文章介紹了實現(xiàn)將HTML字符串保存為.mhtml文件的代碼邏輯,包括通過URL和Cookie免密獲取HTML字符串,將HTML中的圖片、CSS、JS轉(zhuǎn)換為base64字符串,刪除不需要的布局和內(nèi)容,最終將替換后的HTML保存為.mhtml文件,感興趣的朋友跟隨小編一起看看吧
    2026-01-01
  • Maven設置使用自定義的jar包到自己本地倉庫

    Maven設置使用自定義的jar包到自己本地倉庫

    今天小編就為大家分享一篇關(guān)于Maven設置使用自定義的jar包到自己本地倉庫的文章,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • 詳解Spring中的AOP及AspectJ五大通知注解

    詳解Spring中的AOP及AspectJ五大通知注解

    這篇文章主要介紹了詳解Spring中的AOP及AspectJ五大通知注解,AOP面向切面編程是一種新的方法論,是對傳統(tǒng)OOP面向?qū)ο缶幊痰难a充,AOP?的主要編程對象是切面(aspect),切面模塊化橫切關(guān)注點,需要的朋友可以參考下
    2023-08-08
  • java版數(shù)獨游戲核心算法(一)

    java版數(shù)獨游戲核心算法(一)

    這篇文章主要為大家詳細介紹了java版數(shù)獨游戲的核心算法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • 基于Java實現(xiàn)抽獎系統(tǒng)

    基于Java實現(xiàn)抽獎系統(tǒng)

    這篇文章主要為大家詳細介紹了基于Java實現(xiàn)抽獎系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Java基礎教程之實現(xiàn)接口

    Java基礎教程之實現(xiàn)接口

    這篇文章主要介紹了Java基礎教程之實現(xiàn)接口,也可以說是實施接口,因為接口只是定義,最終要實現(xiàn)它,本文就專門講解接口的實現(xiàn),需要的朋友可以參考下
    2014-08-08
  • SpringSecurity實現(xiàn)自定義登錄接口的詳細過程

    SpringSecurity實現(xiàn)自定義登錄接口的詳細過程

    本文詳細介紹了如何使用SpringSecurity實現(xiàn)自定義登錄接口,文章還涉及了對用戶實體類的增強以滿足詳細信息的需求,適合需要深入了解和實現(xiàn)SpringSecurity自定義登錄功能的開發(fā)者,感興趣的朋友跟隨小編一起看看吧
    2024-10-10

最新評論

江孜县| 大邑县| 延吉市| 安康市| 万州区| 盘山县| 甘孜| 黄山市| 镇原县| 民丰县| 凤城市| 丰原市| 集安市| 清水县| 正定县| 浮山县| 齐齐哈尔市| 昌邑市| 德阳市| 连山| 九龙县| 四川省| 贺兰县| 陵水| 庆云县| 瑞金市| 许昌市| 泰兴市| 仙桃市| 安福县| 封开县| 汉阴县| 新郑市| 清水河县| 英超| 青冈县| 财经| 大洼县| 建宁县| 同江市| 嫩江县|