JetCache
简介
continew-starter-cache-jetcache 是 ContiNew Starter 缓存模块针对 JetCache 框架的扩展实现(@since 1.2.0),提供多级缓存(本地 + 远程)解决方案,注解原生支持 TTL、分布式自动刷新,并可通过 Cache 接口手工操作缓存。
主要特性
- 多级缓存: 本地缓存 + 远程缓存组合使用,远程端基于 Redisson 适配
- 强大注解: 相比 Spring Cache 提供更强大的注解能力,原生支持 TTL、两级缓存、分布式自动刷新
- 手工 API: 提供 Cache 接口用于手工缓存操作
- 开箱即用: 引入依赖即自动装配,无启用开关
快速开始
引入依赖
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。
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(防击穿)。
与其他缓存实现的差异
| 实现 | 定位 |
|---|---|
| Redisson | Redis 客户端增强与分布式工具(分布式锁、限流器等) |
| Spring Cache | 基于 Spring Cache 抽象的单级 Redis 缓存,解决 Jackson 序列化乱码 |
| JetCache | 多级缓存(本地 + 远程),注解能力更强 |
核心依赖
| 依赖 | 描述 |
|---|---|
| top.continew.starter:continew-starter-cache-redisson | Redisson 缓存支撑模块(远程缓存客户端基础) |
| com.alicp.jetcache:jetcache-autoconfigure | JetCache 官方自动配置 |
| com.alicp.jetcache:jetcache-anno | JetCache 注解与方法缓存支持 |
| com.alicp.jetcache:jetcache-redisson | JetCache 的 Redisson 适配 |
| org.apache.commons:commons-pool2 | 通用对象池(Redis 连接池化依赖) |