guava cache知识点整理

Guava cache介绍


CacheBuilder 是 Guava 缓存库(Google 提供的一个 Java 工具库)中的一个类,用于创建和配置缓存实例。
Guava 缓存库提供了一套强大且易用的缓存解决方案,可以帮助开发者轻松地添加缓存功能以提高程序性能。而 CacheBuilder 是其中一个关键的构建器类,它提供了多种方法用于配置和创建缓存实例。


 CacheBuilder 的一些主要特点和功能如下:
链式调用:CacheBuilder 允许通过链式调用方法来配置缓存的各项参数,使得配置变得简洁明了。
maximumSize(long):指定缓存的最大容量,当缓存超过指定容量时,会按照一定的策略(例如LRU)进行缓存项的清理。
过期时间设置:使用 expireAfterWrite(duration, unit) 方法可以为缓存项设定写入后过期时间,即在一定时间后自动从缓存中移除。
弱引用键或值:可以使用 weakKeys() 和 weakValues() 方法将缓存的键或值设置为弱引用,这样当没有其他强引用指向它们时,垃圾回收器可以自动回收这些对象。

refreshAfterWrite(duration, unit) :为缓存项设置定时刷新,即在一定时间后自动更新缓存项的值,避免了缓存过期时的数据加载延迟。


统计信息:CacheBuilder 提供了统计缓存命中率等信息的功能,可以通过 recordStats() 方法开启统计,并通过 Cache.stats() 方法获取统计信息。
自定义缓存加载器:可以通过 build(CacheLoader) 方法传入自定义的缓存加载器,用于指定缓存项的加载逻辑。

项目中pom.xml引用

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>18.0</version>
</dependency>

代码实例:

Cache<String, String> localCache = CacheBuilder.newBuilder()
                .initialCapacity(5)
                .maximumSize(2000)
                .concurrencyLevel(3)
                .expireAfterWrite(10, TimeUnit.SECONDS)
                .build();

1、getIfPresent(key):从现有的缓存中获取,如果缓存中有key,则返回value,如果没有则返回null;

2、getAll(Iterable<? extends K>)方法用来执行批量查询。默认情况下,对每个不在缓存中的键,getAll方法会单独调用CacheLoader.load来加载缓存项。可以通过重写load()方法来提高加载缓存的效率;

3、get(K):使用这个方法要么返回已经缓存的值,要么使用CacheLoader向缓存原子地加载新值。由于CacheLoader可能抛出异常,LoadingCache.get(K)也声明为抛出ExecutionException异常。
            如果你定义的CacheLoader没有声明任何检查型异常,则可以通过 getUnchecked(K) 查找缓存;但必须注意,一旦CacheLoader声明了检查型异常,就不可以调用getUnchecked(K)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值