Java中的JetCache?實(shí)戰(zhàn)
1.JetCache 是什么?
JetCache
是一個基于Java的緩存系統(tǒng)封裝,提供統(tǒng)一的API和注解來簡化緩存的使用。 JetCache提供了比SpringCache
更加強(qiáng)大的注解,可以原生的支持TTL、兩級緩存、分布式自動刷新,還提供了Cache
接口用于手工緩存操作。 當(dāng)前有四個實(shí)現(xiàn),RedisCache
、TairCache
(此部分未在github開源)、CaffeineCache
(in memory)和一個簡易的LinkedHashMapCache
(in memory),要添加新的實(shí)現(xiàn)也是非常簡單的。
全部特性:
- 通過統(tǒng)一的API訪問
Cache
系統(tǒng) - 通過注解實(shí)現(xiàn)聲明式的方法緩存,支持TTL和兩級緩存
- 通過注解創(chuàng)建并配置
Cache
實(shí)例 - 針對所有
Cache
實(shí)例和方法緩存的自動統(tǒng)計 - Key的生成策略和Value的序列化策略是可以配置的
- 分布式緩存自動刷新,分布式鎖 (2.2+)
- 異步Cache API (2.2+,使用Redis的lettuce客戶端時)
- Spring Boot支持
2.使用方法
- 添加依賴
? ?// redis ? ?implementation 'org.springframework.boot:spring-boot-starter-data-redis' ? ?implementation 'org.apache.commons:commons-pool2' ? ? ?// jetcache ? ?implementation 'com.alicp.jetcache:jetcache-starter-redis:2.6.2'
- 配置 yml
jetcache: statIntervalMinutes: 15 areaInCacheName: false local: ? default: ? ? type: linkedhashmap ? ? keyConvertor: fastjson remote: ? default: ? ? type: redis ? ? keyConvertor: fastjson ? ? valueEncoder: java ? ? valueDecoder: java ? ? poolConfig: ? ? ? minIdle: 5 ? ? ? maxIdle: 20 ? ? ? maxTotal: 50 ? ? host: 127.0.0.1 ? ? port: 6379
- 然后創(chuàng)建一個App類放在業(yè)務(wù)包的根下,
EnableMethodCache
,EnableCreateCacheAnnotation
這兩個注解分別激活Cached和CreateCache注解,其他和標(biāo)準(zhǔn)的Spring Boot程序是一樣的。這個類可以直接main方法運(yùn)行。
package io.zhengsh.order; ? import com.alicp.jetcache.anno.config.EnableCreateCacheAnnotation; import com.alicp.jetcache.anno.config.EnableMethodCache; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; ? @MapperScan("io.zhengsh.order.mapper") @SpringBootApplication @EnableMethodCache(basePackages = "io.zhengsh.order.service") @EnableCreateCacheAnnotation public class OrderApplication { ? ? ?public static void main(String[] args) { ? ? ? ?SpringApplication.run(OrderApplication.class); ? } }
- 業(yè)務(wù)類上增加注解使用,業(yè)務(wù)類代碼如下:
public interface OrderService { ? ? ?OrderVo get(Long id); ? ? ?OrderVo createOrder(OrderDto orderDto); } ? // 實(shí)現(xiàn)類 @Service public class OrderServiceImpl implements OrderService { ? ? ?private Logger logger = LoggerFactory.getLogger(OrderServiceImpl.class); ? ? ?@Override ? ?public OrderVo get(Long id) { ? ? ? ?logger.info("OrderService#get invoke!"); ? ? ? ?Order orderVo = ?new OrderVo(); ? ? ? ?orderVo.setCode("100"); ? ? ? ?return orderVo; ? } ? ? ?@Override ? ?public OrderVo createOrder(OrderDto orderDto) { ? ? ? ?logger.info("OrderService#createOrder invoke!"); ? ? ? ?return null; ? } }
- 測試代碼
@SpringBootTest class OrderServiceTest { ? ? ?private Logger logger = LoggerFactory.getLogger(OrderServiceTest.class); ? ? ?@Autowired ? ?private OrderService orderService; ? ? ?@Test ? ?void get() { ? ? ? ?OrderVo orderVo = orderService.get(100L); ? ? ? ?logger.info("orderVo#code : {} ", orderVo.getCode()); ? ? ? ? ?OrderVo orderVo1 = orderService.get(100L); ? ? ? ?logger.info("orderVo#code : {} ", orderVo1.getCode()); ? } ? ? ?@Test ? ?void createOrder() { ? } }
輸出如下:
?// 輸出
// OrderService#get invoke!
// orderVo#code : 100
// orderVo#code : 100
到此這篇關(guān)于Java中的JetCache 實(shí)戰(zhàn)的文章就介紹到這了,更多相關(guān)Java中的JetCache內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java Swing JToggleButton開關(guān)按鈕的實(shí)現(xiàn)
這篇文章主要介紹了Java Swing JToggleButton開關(guān)按鈕的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12SkyWalking?自定義插件(Spring?RabbitMQ)具體分析過程
這篇文章主要介紹了SkyWalking?自定義插件(Spring?RabbitMQ)具體分析過程,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-02-02Java GUI進(jìn)階之流式布局管理器FlowLayout專項(xiàng)精講
FlowLayout-流式布局管理器,按水平方向依次排列放置組件,排滿一行,換下一行繼續(xù)排列。排列方向(左到右 或 右到左)取決于容器的componentOrientation屬性2022-04-04SpringBoot整合Scala構(gòu)建Web服務(wù)的方法
這篇文章主要介紹了SpringBoot整合Scala構(gòu)建Web服務(wù)的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03java算法題解Leetcode763劃分字母區(qū)間示例
這篇文章主要為大家介紹了java算法題解Leetcode763劃分字母區(qū)間示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01