Кэш с фиксированным временем истечения в Java - PullRequest
5 голосов
/ 26 февраля 2010

Мое веб-приложение Java (tomcat) получает все свои данные из базы данных SQL. Тем не менее, большие части этой базы данных обновляются только один раз в день с помощью пакетного задания. Поскольку запросы к этим таблицам, как правило, выполняются довольно медленно, я хочу кэшировать результаты.

Перед развертыванием своего собственного решения я хотел проверить существующие решения для кэширования для Java. Очевидно, я искал stackoverflow и нашел ссылки и рекомендации для ehcache .

Но, просматривая документацию, кажется, что она позволяет установить время жизни кэшированных объектов как длительность (например, истекает через 1 час после добавления), в то время как я хочу, чтобы истечение основывалось на фиксированном времени (например, истекает в 0:30).

Кто-нибудь знает библиотеку кеша, которая позволяет такое поведение истечения? Или как это сделать с ehcache, если это возможно?

Ответы [ 2 ]

5 голосов
/ 26 февраля 2010

EhCache позволяет программно устанавливать срок действия отдельного элемента кэша при его создании. Значения, заданные в ehcache.xml, являются значениями по умолчанию.

Если вы знаете конкретное абсолютное время истечения срока действия элемента, то вы можете рассчитать разницу в секундах между тогда и «сейчас» (то есть временем, которое вы добавляете в кэш), и установить его как время до продолжительность в реальном времени, используя Element.setTimeToLive()

1 голос
/ 26 февраля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...