Я использую кеш guava в своем приложении, которое было написано на платформе hibernate.Проблема в том, что мой кеш не работает при загрузке данных.Он не обновляется быстро, когда я удаляю или добавляю новые данные.
private void initializeCache()
{
CacheLoader<String, List<~My Data Type~>> cacheLoader = new CacheLoader<String, List<~My Data Type~>>()
{
@Override
public List<~My Data Type~> load(String key) throws Exception
{
return loadingCache.get(key);
}
};
this.loadingCache = CacheBuilder.newBuilder().expireAfterAccess(5, TimeUnit.MINUTES).build(cacheLoader);
}
, и так я загружаю данные на сервер,
public List<~My Data Type~> findByIds(final List<String> ids) throws SpiderException
{
final List<~My Data Type~> datas = new ArrayList<>();
if (loadingCache.asMap().isEmpty())
{
final List<~My Data Type~> loaded = loadById(ids);
if (loaded != null && !loaded.isEmpty())
{
loadingCache.putAll(
loaded.stream().collect(Collectors.groupingBy(~My Data Type~::getId, Collectors.toList())));
}
}
final ImmutableMap<String, List<~My Data Type~>> allPresent = loadingCache.getAllPresent(ids);
for (Entry<String, List<~My Data Type~>> myData : allPresent.entrySet())
{
datas.addAll(myData .getValue());
}
return datas;
}
Также я неt использовать кеш при сохранении или удалении данных.Может кто-нибудь объяснить мне, что является причиной этого вопроса?Это проблема кэша гуавы ?