日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

【SpringBoot】SpringCache輕松啟用Redis緩存

作者:MoCrane 更新時間: 2024-07-18 編程語言

目錄:

1.前言

2.常用注解

3.啟用緩存

1.前言

Spring Cache是Spring提供的一種緩存抽象機制,旨在通過簡化緩存操作來提高系統性能和響應速度。Spring Cache可以將方法的返回值緩存起來,當下次調用方法時如果從緩存中查詢到了數據,可以直接從緩存中獲取結果,而無需再次執行方法體中的代碼

2.常用注解

  • @Cacheable:在方法執行前查看是否有緩存對應的數據,如果有直接返回數據,如果沒有調用方法獲取數據返回,并緩存起來;
  • @CacheEvict:將一條或多條數據從緩存中刪除;
  • @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.創建緩存

使用@CachePut注解。當方法執行完后,如果緩存不存在則創建緩存;如果緩存存在則更新緩存。

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

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

@CachePut(value = "user", key = "#result.id")
public UserInfo create(UserCreateRequest request) {
    // 將請求中的數據映射給實體類(相關方法自行創建)
    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注解。當方法執行完后,如果緩存不存在則創建緩存;如果緩存存在則更新緩存。

@CachePut(value = "user", key = "#result.id")
public UserInfo update(UserUpdateRequest request) {
    // 將請求中的數據映映射給wrapper(相關方法自行創建)
    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注解。在方法執行前,首先會查詢緩存,如果緩存不存在,則根據方法的返回結果創建緩存;如果緩存存在,則直接返回數據,不執行方法。

這里使用request表示方法的參數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注解。當方法執行完后,會根據key刪除對應的緩存。

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

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

3.7.多重操作

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

創建/更新多個緩存:

@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")
            }
    )

原文鏈接:https://blog.csdn.net/k123456kah/article/details/140445920

  • 上一篇:沒有了
  • 下一篇:沒有了
欄目分類
最近更新