2017-02-02 27 views
0

Я новичок в Ehcache, My Rest кэш API работаетEhcache для обновления, когда обновление пройдет в базе данных

<cache name="com.a.b.c.model.Act" 
maxElementsInMemory="10000" overflowToDisk="false" statistics="true" /> 

Если я делать какое-либо обновление в базе данных с помощью запроса, кэш не будет обновлять эти изменения ,

Если я обновляю через REST API, кеш будет обновлен.

Какие изменения я должен сделать, если я должен получить обновление кэша, когда изменение происходит в базе данных

Это хорошо идти с timeToLiveSeconds или любых других конфигураций может быть сделано?

ответ

2

Обновление кеша при изменении базовой системы записи, а не методах обслуживания, при которой выполняется кеширование, является классической проблемой кэширования.

Ehcache не предоставляет решение из коробки, поскольку это будет означать поддержку ВСЕ технологии, которые могут действовать как система записи. Не только базы данных, но и веб-сервисы и все, что может предложить программист.

Однако, если ваше приложение может жить с устаревшими данными в кеше в течение небольшого периода времени, то истекает. Он эффективно отмечает записи кэша как действительные в течение периода времени - времени для жизни.

Если ваше приложение не может поддерживать устаревшие данные в кеше, вам нужно будет убедиться, что процесс обновления системы записи позаботится об аннулировании кеша.

1

Если код, который upadating базы данных может получить доступ к менеджеру Ehcache (такой же VM или распределенное сохранение) наилучшим решением является сломать кэш

CacheManager.getInstance().getEhcache("mycache").remove(key); 

и пусть кэш обновления автономно.

Если вы уже распоряжаться обновленным объект можно также пропустить один шаг с put

CacheManager.getInstance().getEhcache("mycache").put(key, updatedObject); 

Если ваш код CacheEntryFactories я позволил бы заводу делать бизнес (создание начального централизована, вы можете добавить больше логика)

 Смежные вопросы

  • Нет связанных вопросов^_^