- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
在guava中,使用LoadingCache时会同步调用CacheLoader。但是,我的 load()
操作可能需要太长时间(~1 秒),我想采取默认操作以防它花费太长时间(>200 毫秒)并异步加载值。
有办法实现吗?或者您是否可以推荐任何其他方法?
最佳答案
Caffeine library是 Guava 缓存的 Java 8 重写,它允许将条目异步自动加载到缓存中,返回 CompletableFutures。它由直接参与创建 Guava 缓存的人员编写,并使用受 Guava 启发的 API(包括 Guava 接口(interface)的适配器)。
根据 Guava 邮件列表上的帖子,它基于 Guava 缓存库的原始提案,并包含最初针对 Guava 本身的更改,但由于各种原因(包括 Guava 需要兼容)而未包含在内使用旧版本的 Java)。
事实上,一些项目现在考虑弃用 Guava 缓存并改用 Caffeine,e.g. Spring has switched to Caffeine并且作者指出“Caffeine 是 ConcurrentLinkedHashMap 和 Guava 缓存的 Java 8 继承者。项目应该更喜欢 Caffeine,并在需要 JDK8 或更高版本时迁移。”
关于java - 使用异步加载的 LoadingCache,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17456955/
Google 提供了“loading cache ”,其描述如下: A semi-persistent mapping from keys to values. Values are automati
在guava中,使用LoadingCache时会同步调用CacheLoader。但是,我的 load() 操作可能需要太长时间(~1 秒),我想采取默认操作以防它花费太长时间(>200 毫秒)并异步加
我使用 Map 容器作为 LoadingCache 中的值: @Service public class SlideCacheSpace { @Value("${value}") pr
我有一个数据结构,其中有对象,并且它们有目标。并且它们之间是多对多的关系。例如:object1 具有目标:t1、t2、t3 和object2 有目标:t2、t3。 我想编写一个 Guava Loadi
我有一个像这样的loadingcache类: LoadingCache> parents 其中 Parent 是一个具有 id、description、home 和 nickname asMap();
我完全重写了这个问题,因为原来的问题无法解决。为了简单起见,我使用斐波那契数列作为玩具示例。 trivial recursive cached computation正如预期的那样,以非常长的堆栈跟踪
我正在使用 CacheBuilder和 LoadingCache实现数据库数据的内存缓存。 假设客户端在缓存中查询后备存储中不存在的项目。我想让客户端知道没有找到指定键的数据。处理此问题的最佳方法是什
我需要在每天的特定时间刷新我的缓存,在我的例子中,是在午夜。我有办法用 Guava LoadingCache 做到这一点吗?到目前为止,我只在一天后使用下一个代码更新了缓存: private fina
我有一个像这样的加载缓存: MyCacheLoader loader=new MyCacheLoader(); MyRemovalListener listener=new MyRemovalList
我正在使用 Guava LoadingCache 来存储数据库查询的结果。但是,尽管没有设置逐出策略,但通过 getFromCache() 获取缓存会导致每次都命中 CacheLoader load(
我在我的项目中使用 Guava 的 LoadingCache 来处理线程{安全、友好}的缓存加载,它工作得非常好。但是,有一个限制。 当前定义缓存的代码如下所示: cache = CacheBuild
当我单独运行它们时,我为 Caffeine CacheLoader 实现编写的单元测试(JUnit、Mockito)全部成功,但当我一起运行它们时,其中一个测试失败了。我相信我在所有测试对象设置中都遵
我正在使用 Guava LoadingCache 向其中填充一些数据,并且我想每 1 分钟从该 LoadingCache 中删除所有条目。 public class MetricHolder {
我正在使用 Guava LoadingCache 将所有元素一次批量加载到我的急切缓存中。但是执行loadAll我提供的方法实际上并不需要 Iterable keys 参数,因为我的 DAO 也不排除
我希望添加几个不同的 LoadingCache到 Spring CacheManager ,但是我不明白如何使用 CaffeineCacheManager 实现这一点。看来只有一个加载器可以刷新内容,
我正在使用一个允许用户更改其显示名称的帐户系统。为了实现这一点,每个用户都有一个 UUID 。在我的程序中的各个点,我可能有一个 UUID 并想要其当前的显示名称,或者我可能有一个当前的显示名称并且我
我正在使用 Guava 的 Loading Cache缓存 HTTP 请求的结果。 Kotlin/KTOR 提供了一个 HTTP Client Library基于协程(即非阻塞 HTTP 请求)。 我
要在 spring boot 应用程序中本地缓存一些数据,哪种技术在读/写操作方面会更好?HashMap vs ConcurrentHashMap vs LoadingCache( Guava 库)我
我正在使用 Java7,并且正在配置 Apache Ignite(版本 2.7.5),其中服务器/客户端已启动并运行。但是,客户端无法从对象中检索 Guavas LoadingCache 变量(但是检
我正在尝试利用 Guava 库中的 LoadingCache 来缓存 LinkedList。 LoadingCache> cache; 我已经设置了一个 CacheLoader 来处理未命中,它工作正
我是一名优秀的程序员,十分优秀!