首頁 > 軟體

SpringBoot學習之基於註解的快取

2022-03-30 13:00:29

主要使用到的註解:

  • @Cacheable(放入快取) 能夠根據方法的請求引數對其結果進行快取
  • @CachePut(修改快取中的值) 能夠根據方法的請求引數對其結果進行快取,和 @Cacheable 不同的是,它每次都會觸發真實方法的呼叫
  • @CachEvict(清除快取) 能夠根據一定的條件對快取進行清空

使用步驟

1、@EnableCaching 這個註解,標註在 springboot 主啟動類上,表示系統開啟快取。

@EnableCaching
@SpringBootApplication(scanBasePackages = CommonConstant.DEFAULT_PACKAGE_NAME)
public class PortalApp {
    public static void main(String[] args) {
        SpringApplication.run(PortalApp.class, args);
        }
    }

2、在對應需要進行快取的方法上加入對應的註解即可;

註解屬性介紹

@Cacheable() 的屬性值及釋義:

value/cacheNames = "demoCommon";//redis的第一層資料夾為demoCommon key="#id"; //系統自定義key值格式,相當於value下邊一層 unless = "#result==null";//方法返回值結果為空時,不存入快取;

程式碼範例如下:

//-- 根據id查詢demo
@Cacheable(cacheNames = "demoCommon", unless = "#result==null", key="#id")
public Demo queryById(String id) {
    return demoMapper.queryById(id);
}

呼叫上述介面,會將介面返回的資料以下圖格式存入redis,介面再使用此id作為引數查詢時,會直接去快取裡拿:

@CachPut屬性值及釋義:

value/cacheNames = "demoCommon";//redis的第一層資料夾為demoCommon keyGenerator="myKeyGenerator"; //系統自定義key值格式,相當於value下邊一層

呼叫範例如下:

@CachePut(value = "demoCommon", key=#"#demo.id")
public Demo updateById(Demo demo) {
    demoMapper.updateById(demo);
    return demo;
}

呼叫上圖介面,會根據傳入的id找到對應的key快取的值,並修改快取中的value;

@CachEvict屬性值及釋義:

value/cacheNames = "demoCommon";//redis的第一層資料夾為demoCommon key=#"#demo.id"; //系統自定義key值格式,相當於value下邊一層 allEntries="true";// 是否清空所有快取內容,預設為 false,如果指定為 true,則方法呼叫後將立即清空value/cachaeNames下邊的所有快取

@CacheEvict(value = "demoCommon",allEntries="true",key = "#demo.id")
public Demo deleteById(Demo demo) {
    demoMapper.deleteById(demo);
    return demo;
}

呼叫介面後,redis為:

@Caching

介面需要使用多個註解標籤,則可使用此註解;範例如下:

@Caching(put = {
        @CachePut(value = "demoCommon1", key = "#demo.id")
        @CachePut(value = "demoCommon2", key = "#demo.id")
        @CachePut(value = "demoCommon3", key = "#demo.id")
})
public Demo updateByIdC(Demo demo) {
    demoMapper.updateById(demo);
    return demo;
}

總結

到此這篇關於SpringBoot基於註解的快取的文章就介紹到這了,更多相關SpringBoot註解的快取內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com