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

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

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

1.前言

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

2.常用注解

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

3.啟用緩存

3.1.配置yaml文件

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

3.2.添加注解

在啟動(dòng)類上添加注解@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表達(dá)式來獲取key的值。

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

@CachePut(value = "user", key = "#result.id")
public UserInfo create(UserCreateRequest request) {
    // 將請(qǐng)求中的數(shù)據(jù)映射給實(shí)體類(相關(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) {
    // 將請(qǐng)求中的數(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í)行前,首先會(huì)查詢緩存,如果緩存不存在,則根據(jù)方法的返回結(jié)果創(chuàng)建緩存;如果緩存存在,則直接返回?cái)?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í)行完后,會(huì)根據(jù)key刪除對(duì)應(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注解,通過使用不同的屬性進(jìn)行相應(yīng)操作。

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

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

刪除多個(gè)緩存:

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

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

相關(guān)文章

  • Java?ServletContext與ServletConfig接口使用教程

    Java?ServletContext與ServletConfig接口使用教程

    ServletConfig對(duì)象,叫Servlet配置對(duì)象。主要用于加載配置文件的初始化參數(shù)。我們知道一個(gè)Web應(yīng)用里面可以有多個(gè)servlet,如果現(xiàn)在有一份數(shù)據(jù)需要傳給所有的servlet使用,那么我們就可以使用ServletContext對(duì)象了
    2022-09-09
  • mybatis批量更新與插入方式

    mybatis批量更新與插入方式

    這篇文章主要介紹了mybatis批量更新與插入方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • java之swing單選框用法實(shí)例分析

    java之swing單選框用法實(shí)例分析

    這篇文章主要介紹了java之swing單選框用法,以實(shí)例形式分析了swing圖形界面單選框的實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-09-09
  • Mybatis配置之<environments>配置元素詳解

    Mybatis配置之<environments>配置元素詳解

    這篇文章主要介紹了Mybatis配置之<environments>配置元素,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • 詳解java Collections.sort的兩種用法

    詳解java Collections.sort的兩種用法

    這篇文章主要介紹了詳解java Collections.sort的兩種用法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 一個(gè)MIDP俄羅斯方塊游戲的設(shè)計(jì)和實(shí)現(xiàn)

    一個(gè)MIDP俄羅斯方塊游戲的設(shè)計(jì)和實(shí)現(xiàn)

    一個(gè)MIDP俄羅斯方塊游戲的設(shè)計(jì)和實(shí)現(xiàn)...
    2006-12-12
  • 如何實(shí)現(xiàn)java Iterator迭代器功能

    如何實(shí)現(xiàn)java Iterator迭代器功能

    這篇文章主要介紹了如何實(shí)現(xiàn)java Iterator迭代器功能,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • Java中控制流程語句的深入講解

    Java中控制流程語句的深入講解

    流程控制語句顧名思義就是控制程序走向的語句,其中包括條件語句,分支語句和循環(huán)語句,這篇文章主要給大家介紹了關(guān)于Java中控制流程語句的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-10-10
  • Spring中事件發(fā)布機(jī)制及流程詳解

    Spring中事件發(fā)布機(jī)制及流程詳解

    這篇文章主要介紹了Spring中事件發(fā)布機(jī)制及流程詳解,在分析源碼的過程中,也是大量使用了事件機(jī)制,在我分析的這篇博客中,有不少地方都運(yùn)用了事件發(fā)布機(jī)制,所以本文的目的是從SpringBoot中學(xué)習(xí)到事件的發(fā)布流程,需要的朋友可以參考下
    2023-11-11
  • Guava自動(dòng)加載緩存LoadingCache使用實(shí)戰(zhàn)詳解

    Guava自動(dòng)加載緩存LoadingCache使用實(shí)戰(zhàn)詳解

    這篇文章主要為大家介紹了Guava自動(dòng)加載緩存LoadingCache使用實(shí)戰(zhàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12

最新評(píng)論

苗栗市| 兴文县| 资源县| 镇安县| 石柱| 秦皇岛市| 铜川市| 景谷| 河津市| 荔浦县| 伊宁县| 巨野县| 锡林郭勒盟| 延川县| 沈阳市| 东安县| 大厂| 兴山县| 乌兰浩特市| 凤城市| 龙山县| 德化县| 揭西县| 阿拉善盟| 武定县| 曲周县| 理塘县| 新源县| 全州县| 丰都县| 荔波县| 二手房| 满城县| 瑞金市| 洛阳市| 湖南省| 五华县| 营山县| 巴东县| 铅山县| 杭州市|