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);
-----------------------有任何问题可以在评论区评论,也可以私信我,我看到的话会进行回复,欢迎大家指教------------------------
(蓝奏云官网有些地址失效了,需要把请求地址lanzous改成lanzoux才可以)