springboot-整合caffeine
caffeine是基于java8的高性能缓存库。并且在spring5之后,spring官方放弃了guava,而使用caffeine作为默认缓存组件
本地缓存由于是存储在内存中,数据的读取速度是非常快的
依赖
<dependency>
<groupId>com.github.ben-manes.caffeine</groupId>
<artifactId>caffeine</artifactId>
</dependency>
配置类
@Bean
Cache<String,Object> cache(){
return Caffeine.newBuilder()
//设置最后一次写入或访问后经过或访问,经过固定时间过期
.expireAfterWrite(60, TimeUnit.SECONDS)
//初始缓存空间大小
.initialCapacity(100)
//缓存最大条数
.maximumSize(1000)
.build();
}
配置说明
配置项 | 类型 | 描述 |
---|---|---|
initialCapacity | integer | 初始的缓存空间大小 |
maximumSize | long | 缓存的最大条数 |
maximumWeight | long | 缓存的最大权重 |
expireAfterAccess | duration | 最后一次写入或访问,经过多少时间过期 |
expireAfterWrite | duration | 最后一次写入后,经过多少时间过期 |
refreshAfterWrite | duration | 创建缓存或者最近一次更新缓存后,经过多久刷新缓存 |
weakKeys | boolean | 打开key的弱引用 |
weakValues | boolean | 打开value的弱引用 |
softValues | boolean | 打开value的软引用 |
recordStats | - | 开发统计功能 |
注意:
- weakValues和softValues不能同时使用
- maximumSize和maximumWeight不可同时使用
- expireAfterWrite和expireAfterAccess同时存在时,以expireAfterWrite为准
使用
import com.github.benmanes.caffeine.cache.Cache;
@Autowired
private Cache cache;
常用方法:
- getIfPresent:获取缓存中的数据
- put:把数据存入缓存