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

SpringCache輕松啟用Redis緩存的全過程

 更新時間:2024年07月17日 10:03:03   作者:MoCrane  
Spring Cache是Spring提供的一種緩存抽象機制,旨在通過簡化緩存操作來提高系統(tǒng)性能和響應(yīng)速度,本文將給大家詳細(xì)介紹SpringCache如何輕松啟用Redis緩存,文中有詳細(xì)的代碼示例供大家參考,需要的朋友可以參考下

1.前言

Spring Cache是Spring提供的一種緩存抽象機制,旨在通過簡化緩存操作來提高系統(tǒng)性能和響應(yīng)速度。Spring Cache可以將方法的返回值緩存起來,當(dāng)下次調(diào)用方法時如果從緩存中查詢到了數(shù)據(jù),可以直接從緩存中獲取結(jié)果,而無需再次執(zhí)行方法體中的代碼

2.常用注解

  • @Cacheable:在方法執(zhí)行前查看是否有緩存對應(yīng)的數(shù)據(jù),如果有直接返回數(shù)據(jù),如果沒有調(diào)用方法獲取數(shù)據(jù)返回,并緩存起來;
  • @CacheEvict:將一條或多條數(shù)據(jù)從緩存中刪除;
  • @CachePut:將方法的返回值放到緩存中;
  • @EnableCaching:開啟緩存注解功能;
  • @Caching:組合多個緩存注解。

3.啟用緩存

3.1.配置yaml文件

spring:  
  cache:  
    type: simple  
    simple:  
      time-to-live: 600s

3.2.添加注解

在啟動類上添加注解@EnableCaching

@Slf4j
@SpringBootApplication
@EnableCaching
public class SpringBootstrap {
    public static void main(String[] args) {
        SpringApplication.run(SpringBootstrap.class, args);
    }

}

3.3.創(chuàng)建緩存

使用@CachePut注解。當(dāng)方法執(zhí)行完后,如果緩存不存在則創(chuàng)建緩存;如果緩存存在則更新緩存。

注解中的value屬性可指定緩存的名稱,key屬性則可指定緩存的鍵,可使用SpEL表達式來獲取key的值。

這里result表示方法的返回值UserInfo,從UserInfo中獲取id屬性。

@CachePut(value = "user", key = "#result.id")
public UserInfo create(UserCreateRequest request) {
    // 將請求中的數(shù)據(jù)映射給實體類(相關(guān)方法自行創(chuàng)建)
    User user = UserConverter.createByRequest(request);
    boolean save = userService.save(user);
    if (save) {
        return UserConverter.toInfo(user);
    } else {
        throw new RuntimeException("User.create.fail");
    }
}

3.4.更新緩存

同樣使用@CachePut注解。當(dāng)方法執(zhí)行完后,如果緩存不存在則創(chuàng)建緩存;如果緩存存在則更新緩存。

@CachePut(value = "user", key = "#result.id")
public UserInfo update(UserUpdateRequest request) {
    // 將請求中的數(shù)據(jù)映映射給wrapper(相關(guān)方法自行創(chuàng)建)
    Wrapper<User> wrapper = UserConverter.updateWrapperByRequest(request);
    boolean update = userService.update(wrapper);
    if (update) {
        return UserConverter.toInfo(user);
    } else {
        throw new RuntimeException("User.update.fail");
    }
}

3.5.查詢緩存

使用@Cacheable注解。在方法執(zhí)行前,首先會查詢緩存,如果緩存不存在,則根據(jù)方法的返回結(jié)果創(chuàng)建緩存;如果緩存存在,則直接返回數(shù)據(jù),不執(zhí)行方法。

這里使用request表示方法的參數(shù)UserQueryRequest。

@Cacheable(value = "user", key = "#request.id")
public UserInfo query(UserQueryRequest request) {
    User user = userService.getById(request.getId());
    if (Objects.isNull(user)) {
        throw new RuntimeException("User.not.exist");
    }
    return c2cInterestCategory;
}

3.6.刪除緩存

使用@CacheEvict注解。當(dāng)方法執(zhí)行完后,會根據(jù)key刪除對應(yīng)的緩存。

這里可以使用condition屬性,當(dāng)返回結(jié)果為true(刪除成功)后,才去刪除緩存。

@CacheEvict(value = "user", key = "#request.id", condition = "#result.equals(true)")
public Boolean delete(UserDeleteRequest request) {
    return userService.removeById(request.getId());
}

3.7.多重操作

使用@Caching注解,通過使用不同的屬性進行相應(yīng)操作。

創(chuàng)建/更新多個緩存:

@Caching(
            put = {
                    @CachePut(value = "userById", key = "#result.id"),
                    @CachePut(value = "userByPhone", key = "#request.phone")
            }
    )

刪除多個緩存:

@Caching(
            evict = {
                    @CacheEvict(value = "userById", key = "#result.id"),
                    @CacheEvict(value = "userByPhone", key = "#request.phone")
            }
    )

到此這篇關(guān)于SpringCache輕松啟用Redis緩存的全過程的文章就介紹到這了,更多相關(guān)SpringCache啟用Redis緩存內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java必會的Synchronized底層原理剖析

    Java必會的Synchronized底層原理剖析

    synchronized作為Java程序員最常用同步工具,很多人卻對它的用法和實現(xiàn)原理一知半解,以至于還有不少人認(rèn)為synchronized是重量級鎖,性能較差,盡量少用。但不可否認(rèn)的是synchronized依然是并發(fā)首選工具,本文就來詳細(xì)講講
    2022-10-10
  • JavaFX之TableView的使用詳解

    JavaFX之TableView的使用詳解

    這篇文章主要介紹了JavaFX之TableView的使用,有需要的朋友可以參考一下
    2013-12-12
  • SpringBoot啟動參數(shù)的實現(xiàn)

    SpringBoot啟動參數(shù)的實現(xiàn)

    SpringBoot通過jar文件方式啟動,配置可以通過啟動參數(shù)進行覆蓋,本文就來介紹一下SpringBoot啟動參數(shù)的實現(xiàn),感興趣的可以了解一下
    2025-01-01
  • Spring框架的JdbcTemplate使用

    Spring框架的JdbcTemplate使用

    它是 Spring 框架中提供的一個對象,是對原始 Jdbc API 對象的簡單封裝。本文就來介紹一下Spring框架的JdbcTemplate使用,感興趣的可以了解一下
    2021-09-09
  • mac安裝配置jdk環(huán)境變量

    mac安裝配置jdk環(huán)境變量

    這篇文章主要為大家介紹了mac安裝配置jdk環(huán)境變量實現(xiàn)過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • SpringBoot整合H2數(shù)據(jù)庫的操作方法

    SpringBoot整合H2數(shù)據(jù)庫的操作方法

    H2是一個Java語言編寫的嵌入式數(shù)據(jù)庫,它不受平臺的限制,同時H2提供了一個十分方便的web控制臺,用于操作和管理數(shù)據(jù)庫內(nèi)容,本文介紹SpringBoot整合H2數(shù)據(jù)庫的方法,感興趣的朋友一起看看吧
    2024-01-01
  • 快速理解spring中的各種注解

    快速理解spring中的各種注解

    這篇文章主要介紹了快速理解spring中的各種注解,具有一定借鑒價值,需要的朋友可以了解下。
    2017-12-12
  • java三層架構(gòu)原理與作用小結(jié)

    java三層架構(gòu)原理與作用小結(jié)

    這篇文章主要對Java三層架構(gòu)的概念、作用等進行了介紹,需要的朋友可以參考下
    2017-04-04
  • jdk11?jdk17多版本共存切換方式

    jdk11?jdk17多版本共存切換方式

    這篇文章主要介紹了jdk11?jdk17多版本共存切換方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Spring boot 打jar包分離lib的正確配置方式

    Spring boot 打jar包分離lib的正確配置方式

    spring boot打jar包分離lib后,配置文件的方式,在網(wǎng)上可以搜到很多答案,但是都不夠完善,今天小編給大家?guī)砹薙pring boot 打jar包分離lib的正確配置方式,感興趣的朋友一起看看吧
    2018-02-02

最新評論