本文主要是介绍本地缓存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,然后返回。
这篇关于本地缓存Caffeine在springBoot的简单介绍与使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!