Java番石榴缓存:如何在过期后获得整个



我正在尝试使用Java番石榴缓存,我设置我的缓存过期一段时间后值已写入:

Cache<String,String> myCache=CacheBuilder.newBuilder().expireAfterWrite(40, TimeUnit.SECONDS).build();

在我的代码中,我需要检查特定键的子集是否存在于myCache ' '中,如果是,我用这些键构建另一个HashMap:

if (myCache.asMap().keySet().equals(mySet()) {
Map<String,String> myMap=myCache.asMap().entrySet().stream().filter(...).collect(Collectors.toMap(...));
}

我的问题是关于边缘情况。假设一旦我们检查了myCache(myCache.asMap().keySet().equals(mySet())中出现的特定键子集,具有这些键的缓存条目过期并且不再可用。我们检查了键在myCache中但我们无法获得任何值,因为它们刚刚过期。我们如何处理这样的用例和"锁"?一旦我们检查了特定的键,我们的缓存呢?

只使用Cache#getAllPresent(Iterable)which"返回与此缓存中的键相关的值的映射。返回的映射将只包含已经存在于缓存中的条目。">

ImmutableMap<String, String> presentEntries = myCache.getAllPresent(mySet());

最新更新