Java Caffeine 缓存框架的应用

本文介绍了Caffeine,一个基于Java8的高性能缓存库。通过引入依赖,展示了如何定义并配置缓存,包括设置最大容量、过期策略等。Caffeine提供了基于大小和时间的驱逐策略,以及自定义过期时间的功能,便于高效管理缓存。示例代码演示了如何使用Caffeine进行数据获取,适用于存储不常变动和热点数据的缓存场景。
摘要由CSDN通过智能技术生成

Caffeine 是基于Java 8的高性能,接近最佳的缓存库

1、引入依赖

<dependency>
     <groupId>com.github.ben-manes.caffeine</groupId>
     <artifactId>caffeine</artifactId>
     <version>2.8.2</version>
 </dependency>

2、定义

private final Cache<String, List<Object>> bonusDetailRuleCache = Caffeine
            .newBuilder()
            //最大容量
            .maximumSize(100)
            //最后一次使用过后算起的过期时间
            .expireAfterWrite(Duration.ofMinutes(10))
            .build();

Caffeine提供了基于大小的驱除策略:
使用Caffeine.maximumSize(long)方法来指定缓存的最大容量。当缓存超出这个容量的时候,会使用Window TinyLfu策略来删除缓存。我们也可以使用权重的策略来进行驱逐,可以使用Caffeine.weigher(Weigher) 函数来指定权重,使用Caffeine.maximumWeight(long) 函数来指定缓存最大权重值。

Caffeine提供了三种定时驱逐策略:
expireAfterAccess(long, TimeUnit):在最后一次访问或者写入后开始计时,在指定的时间后过期。假如一直有请求访问该key,那么这个缓存将一直不会过期。
expireAfterWrite(long, TimeUnit): 在最后一次写入缓存后开始计时,在指定的时间后过期。
expireAfter(Expiry): 自定义策略,过期时间由Expiry实现独自计算。

还有其他的一些,刷新,写入,监听等功能就不再赘述啦~各位看官自查

3、使用

一般使用

List<Object> list = bonusDetailRuleCache.get("", key -> Service.select());

这样就可以从缓存中查找数据,如果,缓存没有这个key(“”)相关的数据或者过期,就会重新通过service查一遍

可以利用缓存来,存储一些不经常变动和一些热点数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值