直接上代码
1.首先pom文件导入
org.springframework.boot
spring-boot-starter-cache
com.github.ben-manes.caffeine
caffeine
2.配置application.yml文件(此处是配置文件配置,还可以在配置类中配置)需要在启动类加
@EnableCaching注解。
maximumSize表示缓存的最大数量
Caffeine提供了三种定时驱逐策略:
expireAfterAccess(long, TimeUnit):在最后一次访问或者写入后开始计时,在指定的时间后过期。假如一直有请求访问该key,那么这个缓存将一直不会过期。
expireAfterWrite(long, TimeUnit): 在最后一次写入缓存后开始计时,在指定的时间后过期。
expireAfter(Expiry): 自定义策略,过期时间由Expiry实现独自计算。
spring:
cache:
type: caffeine
cache-names: checkToken
caffeine:
spec: maximumSize=5000,expireAfterWrite=5s
测试:
@Cacheable(value = "checkToken",key = "#token")
public Map test(String token) {
System.out.println("我走方法了");
Map map=new HashMap<>();
map.put("test","test");
return map;
}
------------------------------------------------------------------------------------
/**
*
* 测试类
*/
@Test
public void testCheckToken() throws InterruptedException {
long l = System.currentTimeMillis();
Map ret = authFilterService.test("1");
long l1 = System.currentTimeMillis();
System.out.println("一次查库time:"+(l1-l));
System.out.println(ret);
long s = System.currentTimeMillis();
Map ret2 = authFilterService.test("1");
long ss = System.currentTimeMillis();
System.out.println("第二次缓存time:"+(ss-s));
System.out.println(ret2);
Thread.sleep(5000);
long s8 = System.currentTimeMillis();
Map ret8 = authFilterService.test("1");
long ss8 = System.currentTimeMillis();
System.out.println("睡眠后缓存过期第一次查time:" + (ss8 - s8));
System.out.println(ret8);
long s89 = System.currentTimeMillis();
Map ret89 = authFilterService.test("1");
long ss89 = System.currentTimeMillis();
System.out.println("睡眠后缓存过期第二次查缓存time:" + (ss89 - s89));
System.out.println(ret89);
}
------------------------------------------------------------------------------
测试结果:
最后一个简单的集成就完成了。