JetCache 快速实战

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: JetCache是一个基于Java的缓存系统封装,提供统一的API和注解来简化缓存的使用。 JetCache提供了比SpringCache更加强大的注解,可以原生的支持TTL、两级缓存、分布式自动刷新,还提供了Cache接口用于手工缓存操作。 当前有四个实现,RedisCache、TairCache(此部分未在github开源)、CaffeineCache(in memory)和一个简易的LinkedHashMapCache(in memory),要添加新的实现也是非常简单的。

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支持


如何使用


  1. 添加依赖


// 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'


  1. 配置 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


  1. 然后创建一个App类放在业务包的根下,EnableMethodCache,EnableCreateCacheAnnotation这两个注解分别激活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);
    }
}


  1. 业务类上增加注解使用,业务类代码如下:


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;
    }
}


  1. 测试代码


@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


常见问题


常见问题我们可以参考官方的 issues:



相关文章
|
缓存 NoSQL Java
【JetCache】JetCache的使用方法与步骤
【JetCache】JetCache的使用方法与步骤
7253 1
|
缓存 Java Redis
JetCache快速入门
本文简要介绍了基于注解来配置使用JetCache的方式。当使用JetCache的注解时,可以搭配Spring4.0.8以上版本,或者Spring Boot 1.1.9以上版本,本文同时展示了这两种情况下的配置方式。
18949 0
|
缓存 NoSQL Java
阿里巴巴开源的通用缓存访问框架JetCache介绍
JetCache是由阿里巴巴开源的通用缓存访问框架,如果你对Spring Cache很熟悉的话,请一定花一点时间了解一下JetCache,它更好用。JetCache可以做类似Spring Cache的注解式缓存,支持TTL、多级缓存、分布式自动刷新,也提供类似JSR107规范的Cache API。
13145 1
|
XML 自然语言处理 Android开发
🌐Android国际化与本地化全攻略!让你的App走遍全球无障碍!🌍
【7月更文挑战第28天】在全球化背景下,实现Android应用的国际化与本地化至关重要 for 用户基础扩展。本文通过旅游指南App案例,介绍全攻略。步骤包括资源文件拆分与命名、适配布局与方向、处理日期时间及货币格式、考虑文化习俗及进行详尽测试。采用Android Studio支持,创建如`res/values-en/strings.xml`等多语言资源文件夹,使用灵活布局解决文本长度差异问题,并通过用户反馈迭代优化。最终,打造一款能无缝融入全球各地文化的App。
553 3
|
SQL 设计模式 开发框架
谷粒商城笔记+踩坑(6)——商品服务-属性及其关联分组
商品规格属性和销售属性的增删改查、属性分组中查询新增关联的属性
谷粒商城笔记+踩坑(6)——商品服务-属性及其关联分组
|
缓存 NoSQL Java
SpringBoot实用开发篇第五章(整合第三方技术,jetcache,j2cache,Task)
SpringBoot实用开发篇第五章(整合第三方技术,jetcache,j2cache,Task)
|
存储 SQL NoSQL
mybatis-plus小技能: 分表策略(按年分表和按月分表)
业务场景: 日志、交易流水表或者其他数据量大的表,通过日期进行了水平分表,需要通过日期参数,动态的查询数据。 实现思路:利用MybatisPlus的动态表名插件DynamicTableNameInnerInterceptor ,实现Sql执行时,动态的修改表名。
8735 3
mybatis-plus小技能: 分表策略(按年分表和按月分表)
|
缓存 监控 NoSQL
SpringBoot配置第三方专业缓存技术jetcache方法缓存方案
SpringBoot配置第三方专业缓存技术jetcache方法缓存方案
907 1
|
JavaScript Java 关系型数据库
大学生租房|基于Springboot+vue的大学生租房平台(源码+数据库+文档)
大学生租房|基于Springboot+vue的大学生租房平台(源码+数据库+文档)
218 0