Мне нужно кешировать объекты, возвращаемые сторонним сервисом отдыха. Я пытался изучить API CacheLoader.loadAll (), который прекрасно работает с getAll (), только когда все объекты, не найденные в кеше, могут быть успешно извлечены. Если у меня есть частичный случай, когда некоторые объекты выбираются, а некоторые не выбираются, чем этот контракт API-интерфейса (loadAll не удалось вернуть значение для ключа)
Я хотел бы знать, что является лучшим способомПоддержите приведенный выше вариант использования с помощью Google Guava.
this.cache = CacheBuilder.newBuilder().maximumSize(1000).build(new CacheLoader<String, NamedEntity>() {
@Override
public Map<String, NamedEntity> loadAll(Iterable<? extends String> keys) throws Exception {
Map<String, NamedEntity> map = new ConcurrentHashMap<>();
for (NamedEntity namedEntity : client.getNamedEntities(keys)) {
map.put(namedEntity.getYkId(), namedEntity);
}
return map;
}
});
try {
entities = cache.getAll(keys);
} catch (Exception e) {
e.printStackTrace();
}