Skip to content

JetCache

简介

continew-starter-cache-jetcache 是 ContiNew Starter 缓存模块针对 JetCache 框架的扩展实现(@since 1.2.0),提供多级缓存(本地 + 远程)解决方案,注解原生支持 TTL、分布式自动刷新,并可通过 Cache 接口手工操作缓存。

主要特性

  • 多级缓存: 本地缓存 + 远程缓存组合使用,远程端基于 Redisson 适配
  • 强大注解: 相比 Spring Cache 提供更强大的注解能力,原生支持 TTL、两级缓存、分布式自动刷新
  • 手工 API: 提供 Cache 接口用于手工缓存操作
  • 开箱即用: 引入依赖即自动装配,无启用开关

快速开始

引入依赖

pom.xml
xml
<dependency>
    <groupId>top.continew.starter</groupId>
    <artifactId>continew-starter-cache-jetcache</artifactId>
</dependency>

添加配置

本模块无专属配置属性类,内置默认配置仅以下两项,jetcache.local.*jetcache.remote.* 请按 JetCache 官方配置文档设置;Redis 连接与 Redisson 相关配置请查看:top.continew.starter.cache.redisson.autoconfigure.RedissonProperties

application.yml
yaml
--- ### JetCache 配置
jetcache:
  # 统计间隔(默认 0,表示不统计)
  statIntervalMinutes: 0
  areaInCacheName: false

远程缓存依赖 Redisson

本模块依赖 continew-starter-cache-redisson,远程缓存基于 Redisson 客户端适配,相关配置参见 Redisson

使用 @Cached 注解

通过 @EnableMethodCache 开启方法缓存后,即可使用 JetCache 标准注解:

java
@EnableMethodCache(basePackages = "top.continew.admin")
@SpringBootApplication
public class Application {
    // ...
}
java
@Service
public class DemoService {

    @Cached(name = "demo:", key = "#id", expire = 3600, cacheType = CacheType.BOTH)
    public DemoVo get(Long id) {
        // cacheType = BOTH 时同时使用本地与远程缓存(两级缓存)
        return ...;
    }

    @CacheInvalidate(name = "demo:", key = "#id")
    public void update(DemoReq req) {
        // ...
    }
}

常用注解:@Cached(方法缓存)、@CacheUpdate(更新缓存)、@CacheInvalidate(失效缓存)、@CacheRefresh(自动刷新)、@CachePenetrationProtect(防击穿)。

与其他缓存实现的差异

实现定位
RedissonRedis 客户端增强与分布式工具(分布式锁、限流器等)
Spring Cache基于 Spring Cache 抽象的单级 Redis 缓存,解决 Jackson 序列化乱码
JetCache多级缓存(本地 + 远程),注解能力更强

核心依赖

依赖描述
top.continew.starter:continew-starter-cache-redissonRedisson 缓存支撑模块(远程缓存客户端基础)
com.alicp.jetcache:jetcache-autoconfigureJetCache 官方自动配置
com.alicp.jetcache:jetcache-annoJetCache 注解与方法缓存支持
com.alicp.jetcache:jetcache-redissonJetCache 的 Redisson 适配
org.apache.commons:commons-pool2通用对象池(Redis 连接池化依赖)

参考资料

  1. JetCache 官方文档:https://github.com/alibaba/jetcache/blob/master/docs/CN/Readme.md
  2. JetCache 配置文档:https://github.com/alibaba/jetcache/blob/master/docs/CN/Config.md