本地缓存Caffeine在springBoot的简单介绍与使用

Caffeine 是一个高性能的 Java 缓存库,它提供了灵活的缓存策略,比如自动加载、大小限制、时间过期和引用回收等。这个库是基于 Google Guava 缓存设计而来,但在性能上进行了大幅优化,是当前 Java 应用中常用的缓存解决方案之一。

        其实就是操作本地缓存而已,用起来和redis差不多,但是会快很多,因为是本地的,没有网络开销。

导入依赖:

<dependency>
    <groupId>com.github.ben-manes.caffeine</groupId>
    <artifactId>caffeine</artifactId>
    <version>${caffeine.version}</version>
</dependency>

替换成自己想导入的版本。

基本配置选项:

  • maximumSize(long size)
    设置缓存的最大容量。超过此容量后,旧条目将根据淘汰策略(例如 LRU)被移除。

  • expireAfterWrite(long duration, TimeUnit unit)
    设置缓存条目在指定时间后自写入起失效。这意味着条目在写入缓存后一定时间内有效,之后将被自动移除。

  • expireAfterAccess(long duration, TimeUnit unit)
    设置缓存条目在指定时间内未被访问则失效。如果条目在这段时间内没有被读取或写入,则会被自动移除。

  • weakKeys() / weakValues() / softValues()
    这些方法允许缓存使用弱引用或软引用来存储键或值。这种设置有助于减少内存压力,因为垃圾回收器可以在需要时回收这些条目。

  • refreshAfterWrite(long duration, TimeUnit unit)
    设置在指定时间后刷新缓存条目,这并不会移除条目,而是标记为需要刷新,下次访问时将触发重载。

缓存操作方法

  • get(K key, Function<? super K, V> mappingFunction)
    如果键对应的值不存在,通过提供的函数加载并返回值,同时将其加入缓存。

  • put(K key, V value)
    向缓存中添加或更新键值对。

  • invalidate(Object key)
    从缓存中移除指定的键和对应的值。

  • invalidateAll()
    清空缓存中的所有条目。

  • asMap()
    返回缓存的 ConcurrentMap 视图,这允许你使用标准的 Map 操作来操作缓存。

高级功能

  • recordStats()
    开启缓存的统计功能,比如命中率、平均加载时间等,这对于监控缓存的性能和行为非常有用。

  • build(CacheLoader<K, V> loader)
    使用一个 CacheLoader 来创建一个自动加载的 LoadingCache 实例。如果缓存未命中,将自动调用 CacheLoader 加载数据。

  • buildAsync(CacheLoader<K, CompletableFuture<V>> loader)
    创建一个支持异步操作的缓存,使用 CompletableFuture 作为返回类型,适用于加载数据需要异步操作的场景。

简单使用:

构建Cache
    Cache<String, Integer> stepCache = Caffeine.newBuilder()
            .expireAfterWrite(3, TimeUnit.MINUTES) // 更新后三分钟失效
            .maximumSize(1000) // 缓存最大1000条
            .build();

Caffeine.newBuilder() 方法开始构建一个缓存配置。

exipreAfterWrite:是淘汰策略,这里是更新键值对三分钟内没被查询就失效淘汰。

maximumSize:缓存的最大条数。

.build() 方法创建一个 Cache 实例。

get

    public Integer getStepByCode(String businessCode) {
        return stepCache.get(businessCode, k->segmentMapper.selectById(businessCode).getStep());
    }

如果cache中查询到了就返回,如果不存在,从数据库中查询,放入cache,然后返回。

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cosmoshhhyyy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值