1. JetCache 介绍
JetCache是一个基于Java的缓存系统封装,提供统一的API和注解来简化缓存的使用。 JetCache提供了比SpringCache更加强大的注解,可以原生的支持TTL、两级缓存、分布式自动刷新,还提供了Cache接口用于手工缓存操作。 当前有四个实现,RedisCache、TairCache(此部分未在github开源)、CaffeineCache(in memory)和一个简易的LinkedHashMapCache(in memory),要添加新的实现也是非常简单的。
详细的学习可以直接到Aibaba发布的官方文档进行学习深入-- github.com/alibaba/jet…
2. JetCache 的基本使用
- 添加依赖
<dependency>
<groupId>com.alicp.jetcache</groupId>
<artifactId>jetcache-starter-redis</artifactId>
<version>2.5.3</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
- 配置JetCache 的实现 RedisCache 之一(在 项目的配置文件中进行配置自己使用的缓存实现) 在自己的项目中的配置文件中进行配置Redis 连接
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
- 在boot 项目工程中进行缓存开启
在自己项目中的启动类上添加两个注解,就可以开启JetCache 缓存机制
@EnableMethodCache(basePackages = "自己项目的包扫描,根据自己的业务需求进行定义,也可以是自己项目的根包")
@EnableCreateCacheAnnotation
- 在自己的业务代码中通过注解进行使用缓存
在spring环境下,使用@Cached注解可以为一个方法添加缓存,@CacheUpdate用于更新缓存,@CacheInvalidate用于移除缓存元素。注解可以加在接口上也可以加在类上,加注解的类必须是一个spring bean
public interface UserService {
@Cached(name="userCache.", key="args[0]", expire = 3600)
User getUserById(long userId);
@CacheUpdate(name="userCache.", key="args[0]", value="#user")
void updateUser(User user);
@CacheInvalidate(name="userCache.", key="args[0]")
void deleteUser(long userId);
}
@Cached中属性的基本介绍: name : 指定缓存的唯一名称,不是必须的,如果没有指定,会使用类名+方法名。name会被用于远程缓存的key前缀。另外在统计中,一个简短有意义的名字会提高可读性。 key: 使用SpEL指定key,如果没有指定会根据所有参数自动生成。通俗的讲就是方法的入参 expire: 缓存过期时间 使用@Cached 注解缓存要注意一个事项: @CacheUpdate和@CacheInvalidate的name和area属性必须和@Cached相同,name属性还会用做cache的key前缀。