Java中的JetCache 实战

 更新时间:2022年04月22日 10:13:12   作者:​ 心城以北   ​  
这篇文章主要介绍了Java中的JetCache实战,JetCache是一个基于Java的缓存系统封装,提供统一的API和注解来简化缓存的使用,下文更多相关资料需要的小伙伴可以参考一下

1.JetCache 是什么?

JetCache是一个基于Java的缓存系统封装,提供统一的API和注解来简化缓存的使用。 JetCache提供了比SpringCache更加强大的注解,可以原生的支持TTL、两级缓存、分布式自动刷新,还提供了Cache接口用于手工缓存操作。 当前有四个实现,RedisCacheTairCache(此部分未在github开源)、CaffeineCache(in memory)和一个简易的LinkedHashMapCache(in memory),要添加新的实现也是非常简单的。

全部特性:

  • 通过统一的API访问Cache系统
  • 通过注解实现声明式的方法缓存,支持TTL和两级缓存
  • 通过注解创建并配置Cache实例
  • 针对所有Cache实例和方法缓存的自动统计
  • 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
  • 然后创建一个App类放在业务包的根下,EnableMethodCacheEnableCreateCacheAnnotation这两个注解分别激活Cached和CreateCache注解,其他和标准的Spring Boot程序是一样的。这个类可以直接main方法运行。
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);
    }
}
  • 业务类上增加注解使用,业务类代码如下:
public interface OrderService {
​
    OrderVo get(Long id);
​
    OrderVo createOrder(OrderDto orderDto);
}
​
// 实现类
@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

到此这篇关于Java中的JetCache 实战的文章就介绍到这了,更多相关Java中的JetCache内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • springboot如何获取相对路径文件夹下静态资源的方法

    springboot如何获取相对路径文件夹下静态资源的方法

    这篇文章主要介绍了springboot如何获取相对路径文件夹下静态资源的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-05-05
  • java多线程抓取铃声多多官网的铃声数据

    java多线程抓取铃声多多官网的铃声数据

    很容易就能发现通过改变 listId和page就能从服务器获取铃声的json数据, 通过解析json数据, 可以看到都带有{"hasmore":1,"curpage":1}这样子的指示,通过判断hasmore的值,决定是否进行下一页的抓取。 但是通过上面这个链接返回的json中不带有铃声的下载地址
    2016-04-04
  • 浅谈让@Value更方便的Spring自定义转换类

    浅谈让@Value更方便的Spring自定义转换类

    Spring为大家内置了不少开箱即用的转换类,如字符串转数字、字符串转时间等,但有时候需要使用自定义的属性,则需要自定义转换类了
    2021-06-06
  • Java使用JDK与Cglib动态代理技术统一管理日志记录

    Java使用JDK与Cglib动态代理技术统一管理日志记录

    这篇文章主要介绍了Java使用JDK与Cglib动态代理技术统一管理日志记录,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • Java里得到00:00:00格式的时分秒的Timestamp

    Java里得到00:00:00格式的时分秒的Timestamp

    Java里如何得到00:00:00格式的时分秒的Timestamp ,下面是具体的实现代码,需要的朋友可以参考下。
    2009-09-09
  • Springmvc模式上传和下载与enctype对比

    Springmvc模式上传和下载与enctype对比

    这篇文章主要介绍了Springmvc模式上传和下载与enctype对比,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-12-12
  • Java实用工具之StringJoiner详解

    Java实用工具之StringJoiner详解

    这篇文章主要介绍了Java实用工具之StringJoiner详解,文中有非常详细的代码示例,对正在学习java的小伙伴们有很好地帮助,需要的朋友可以参考下
    2021-05-05
  • 编写Spring MVC控制器的14个技巧(小结)

    编写Spring MVC控制器的14个技巧(小结)

    这篇文章主要介绍了编写Spring MVC控制器的14个技巧,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • 浅谈Java中真的只有值传递么

    浅谈Java中真的只有值传递么

    这篇文章主要介绍了浅谈Java中真的只有值传递么?文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • 通过JDK源码分析关闭钩子详解

    通过JDK源码分析关闭钩子详解

    一个简单的关闭钩子,程序被中断或者正常退出时会显示 hook shutdown!非常的优雅,有效,巧妙。那么这篇文章就来给大家介绍关于通过JDK源码分析关闭钩子的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴。
    2017-11-11

最新评论