SpringBoot集成Caffeine本地缓存

289 阅读1分钟

SpringBoot项目使用Caffeine本地缓存

  1. 添加maven依赖

<dependency> 
    <groupId>com.github.ben-manes.caffeine</groupId> 
    <artifactId>caffeine</artifactId> 
    <version>2.8.0</version> 
</dependency>
  1. 添加配置类

import com.example.demo.bo.tdhBo.VisitBo; 
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.Map; 

@Configuration
public class CaffeineConfig { 
    @Bean 
    public Cache<String , Map<String, VisitBo>> itemCache() { 
        return Caffeine.newBuilder() 
        .initialCapacity(500)  // 初始的缓存空间大小
        .maximumSize(2000)  // 缓存的最大条数
        .build(); 
    } 
}
  1. 配置说明

参数类型描述
initialCapacityinteger初始的缓存空间大小
maximumSizelong缓存的最大条数
maximumWeightlong缓存的最大权重
expireAfterWriteduration最后一次写入后经过固定时间过期  (与expireAfterAccess 同时存在时,以 expireAfterWrite 为准)
expireAfterAccessduration最后一次访问后经过固定时间过期 (与expireAfterWrite 同时存在时,以 expireAfterWrite 为准)
refreshAfterWriteduration创建缓存或者最近一次更新缓存后经过固定的时间间隔,刷新缓存
weakKeysboolean打开 key 的弱引用
weakValuesboolean打开 value 的弱引用(与softValues不能同时使用)
softValuesboolean打开 value 的软引用 (与weakValues不能同时使用)
recordStats-开发统计功能
  1. 软引用、弱引用的区别

软引用: 如果一个对象只具有软引用,则内存空间足够,垃圾回收器就不会回收它;如果内存空间不足了,就会回收这些对象的内存。

弱引用: 弱引用的对象拥有更短暂的生命周期。在垃圾回收器线程扫描它所管辖的内存区域的过程中,一旦发现了只具有弱引用的对象,不管当前内存空间足够与否,都会回收它的内存

设置方式如下:

// 软引用 
Caffeine.newBuilder().softValues().build();   
// 弱引用 
Caffeine.newBuilder().weakKeys().weakValues().build();
  1. 调用示例

@Autowired  
Cache<String, Object> caffeineCache;    

// 加入缓存 
caffeineCache.put(key,value);    
// 先从缓存读取  
caffeineCache.getIfPresent(id);    
// 从缓存中删除 
caffeineCache.asMap().remove(key);