CaffeineCache基本使用 & SpringBoot集成缓存

本文详细介绍了Caffeine Cache的常用API,包括get、getAll和refresh,以及如何通过容量、时间、引用和权重进行缓存回收。此外,涵盖了SpringBoot中Caffeine的集成和缓存注解的使用,为开发者提供高效本地缓存解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

平常开发中我们经常会使用到缓存,比如对于一些不常更新的数据却需要经常的访问或者计算,为这些热点数据加缓存可以有效减少服务器的性能损失和资源浪费。
本地缓存相比Redis缓存以及其他存储避免了网络IO的开销,它不需要发送redis命令,直接在本地jvm进程中操作缓存数据,而且基于内存的读写效率很高,所以在需要的时候合理使用本地缓存可以有效提高系统的吞吐量。CaffeineCache是非常优秀的开源本地缓存框架。本篇不分析其原理,只关注其简单用法。

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

一、常用API

CaffeineCache 有非常简易的API,可以通过如下方式快速构建一个本地缓存。

LoadingCache<String, Object> cache = Caffeine.newBuilder()
                .expireAfterWrite(1, TimeUnit.SECONDS)
                .expireAfterAccess(1, TimeUnit.SECONDS)
                .maximumSize(10)
                .build(new CacheLoader<String, Object>() {
   
                    @Override
                    public Object load(String s)  {
   
                        return s + "loadValue";
                    }
                });

缓存的常用API如下:

public interface Cache<K, V> {
   
    //取值,如果不存在则返回null
    @Nullable
    V getIfPresent(@Nonnull Object key);

    //取值,如果不存在则执行函数并将执行结果缓存
    @Nullable
    V get(@Nonnull K key, @Nonnull Function<? super K, ? extends V> var2);

    //存值
    void put(@Nonnull K key, @Nonnull V value);

    //批量存值,接受一个map类型的参数,将map中的元素缓存起来
    void putAll(@Nonnull Map<? extends K, ? extends V> map);

    //移除缓存项
    void invalidate(@Nonnull Object key);

    //接受一个可迭代的参数进行批量移除
    void invalidateAll(@Nonnull Iterable<?> var1);

    //清空缓存
    void invalidateAll();
    
    //获取当前缓存项的数量(map中的条目数)
    @Nonnegative
    long estimatedSize();
    
    //缓存的map视图
    @Nonnull
    ConcurrentMap<K, V> asMap();
    //……
}
public interface LoadingCache<K, V> extends Cache<K, V> {
   
	@Nullable
    V get(@Nonnull K key);
    @Nonnull
    Map<K, V> getAll(@Nonnull Iterable<? extends K> var1)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值