Spring Boot | Spring Boot项目集成本地缓存之王(Caffeine)
Caffeine 介绍
Caffeine 是一个高性能的本地缓存库。
示例程序环境配置
本示例程序的依赖环境配置如下:
- JDK版本:1.8
- Caffeine 版本:2.9.3
- SpringBoot 版本:2.7.0
SpringBoot项目中集成Caffeine的步骤
SpringBoot 有如下两种方式集成 Caffeine :
- 方式一:直接引入 Caffeine 依赖,然后使用 Caffeine 方法实现缓存。
- 方式二:引入 Caffeine 和 Spring Cache 依赖,使用 SpringCache 注解方法实现缓存。
我们这里只介绍方式一。
1、在pom.xml
文件中引入caffeine
相关依赖。
<dependency>
<groupId>com.github.ben-manes.caffeine</groupId>
<artifactId>caffeine</artifactId>
</dependency>
2、编写缓存配置类 —— CacheConfig.java
import com.github.benmanes.caffeine.cache.Cache;
import com.github.benmanes.caffeine.cache.Caffeine;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.concurrent.TimeUnit;
@Configuration
public class CacheConfig {
@Bean
public Cache<String, Object> caffeineCache() {
return Caffeine.newBuilder()
// 设置最后一次写入或访问后两个小时后过期
.expireAfterWrite(7200, TimeUnit.SECONDS)
// 初始的缓存空间大小
.initialCapacity(100)
// 缓存的最大条数
.maximumSize(1000)
.build();
}
}
在缓存配置类中我们做了如下设置:
- 设置了最后一次写入或访问后两个小时后过期
- 设置了初始的缓存空间大小
- 设置了缓存的最大条数
Caffeine常用的一些配置:
配置 | 值类型 | 描述说明 |
---|---|---|
expireAfterAccess | duration | 最后一次写入或访问后,指定经过多长的时间过期 |
expireAfterWrite | duration | 最后一次写入后,指定经过多长的时间缓存过期 |
initialCapacity | integer | 初始的缓存空间大小 |
maximumSize | long | 缓存的最大条数 |
maximumWeight | long | 缓存的最大权重 |
refreshAfterWrite | duration | 创建缓存或者最近一次更新缓存后,经过指定的时间间隔后刷新缓存 |
注意:
maximumSize
和maximumWeight
不可以同时使用。expireAfterWrite
和expireAfterAccess
同时存在时,以expireAfterWrite
为准。
3、数据存取
// 1. 注入
@Resource
private Cache<String, Object> caffeineCache;
// 2. 存储数据
caffeineCache.put("access_token", token);
// 3. 读取数据
String token = (String) caffeineCache.asMap().get("access_token");
数据读取时,我们需要先注入caffeine cache,即我们在第2步的缓存配置类中配置的缓存,存储数据是调用的是缓存类的put(...)
方法,读取数据则调用缓存类的get(...)
方法。
转载自:https://juejin.cn/post/7133469059898671112