SpringBoot 使用 Caffeine 本地缓存 带过期key

Tips:过期key时使用Caffeine的expireAfterWrite方法实现,所以一个过期key就对应一个cache 

Maven项目导入依赖

<!-- cache 缓存 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-cache</artifactId>
 	<version>2.5.14</version>
</dependency>

<!-- cache 缓存实现 -->
<dependency>
    <groupId>com.github.ben-manes.caffeine</groupId>
    <artifactId>caffeine</artifactId>
	<version>2.9.3</version>
</dependency>

创建配置类

import org.springframework.cache.caffeine.CaffeineCacheManager;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author lxb
 * @create 2023/6/8 14:42
 **/
@Configuration
public class CaffeineCacheConfig {


    @Bean
    public CaffeineCacheManager cacheManager() {
        CaffeineCacheManager  caffeineCacheManager = new CaffeineCacheManager();
        return caffeineCacheManager;
    }

}

封装工具类是按照redis工具类封装的

@Component
public class CaffeineRepository {

    @Autowired
    private CaffeineCacheManager cacheManager;
    // 默认不过期cache
    static final String defaultCacheName = "ordinary";
    // 过期默认cache
    static final String defaultExpire = "expire";
    // 不过期
    static final long defaultTimeout = -1;
    // 记录过期可以的添加时间使用
    static final String expireKey = ":time";

    /***
     * 获取Cache 没有就创建
     * @param cacheName
     * @return
     */
    public Cache createCache(String cacheName,long timeout){
        if (!isCache(cacheName)) {
            cacheManager.registerCustomCache(cacheName,caffeineCacheBuilder(timeout).build());
        }
        return cacheManager.getCache(cacheName);
    }

    
    public Cache getCache(String cacheName){
        return cacheManager.getCache(cacheName);
    }

    /***
     * 判断Cache是否存在
     * @
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值