SpringBoot项目使用Caffeine本地缓存
环境配置:(或以上版本,必须) 版本有对应关系
JDK 版本:1.8
Caffeine 版本:2.8.0
SpringBoot 版本:2.2.2.RELEASE
也可以不与SpringBoot结合
1、添加maven依赖
<dependency> <groupId>com.github.ben-manes.caffeine</groupId> <artifactId>caffeine</artifactId> <version>2.8.0</version> </dependency>
2、添加配置类
CacheConfig.java
package com.example.demo.config;
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()
// 设置最后一次写入经过60s过期
.expireAfterWrite(60, TimeUnit.SECONDS)
// 初始的缓存空间大小
.initialCapacity(100)
// 缓存的最大条数
.maximumSize(1000)
.build();
}
}
配置说明
| 参数 | 类型 | 描述 |
|---|---|---|
| initialCapacity | integer | 初始的缓存空间大小 |
| maximumSize | long | 缓存的最大条数 |
| maximumWeight | long | 缓存的最大权重 |
| expireAfterWrite | duration | 最后一次写入后经过固定时间过期 (与expireAfterAccess 同时存在时,以 expireAfterWrite 为准) |
| expireAfterAccess | duration | 最后一次访问后经过固定时间过期 (与expireAfterWrite 同时存在时,以 expireAfterWrite 为准) |
| refreshAfterWrite | duration | 创建缓存或者最近一次更新缓存后经过固定的时间间隔,刷新缓存 |
| weakKeys | boolean | 打开 key 的弱引用 |
| weakValues | boolean | 打开 value 的弱引用(与softValues不能同时使用) |
| softValues | boolean | 打开 value 的软引用 (与weakValues不能同时使用) |
| recordStats | - | 开发统计功能 |
软引用: 如果一个对象只具有软引用,则内存空间足够,垃圾回收器就不会回收它;如果内存空间不足了,就会回收这些对象的内存。
弱引用: 弱引用的对象拥有更短暂的生命周期。在垃圾回收器线程扫描它所管辖的内存区域的过程中,一旦发现了只具有弱引用的对象,不管当前内存空间足够与否,都会回收它的内存
设置方式如下:
// 软引用 Caffeine.newBuilder().softValues().build(); // 弱引用 Caffeine.newBuilder().weakKeys().weakValues().build();
3、调用示例
@Autowired Cache<String, Object> caffeineCache; // 加入缓存 caffeineCache.put(key,value); // 先从缓存读取 caffeineCache.getIfPresent(id); // 从缓存中删除 caffeineCache.asMap().remove(key);
-----------------------有任何问题可以在评论区评论,也可以私信我,我看到的话会进行回复,欢迎大家指教------------------------
(蓝奏云官网如果有地址失效了,可以私信我,后续看到会补充)

浙公网安备 33010602011771号