SpringBoot项目使用Caffeine本地缓存

环境配置:(或以上版本,必须)

JDK 版本:1.8 
Caffeine 版本:2.8.0
SpringBoot 版本:2.2.2.RELEASE

1、添加maven依赖

  <dependency>
            <groupId>com.github.ben-manes.caffeine</groupId>
            <artifactId>caffeine</artifactId>
        </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);

  

猜你喜欢

转载自www.cnblogs.com/pxblog/p/12321500.html