Мое веб-приложение Java (кот) получает все свои данные из базы данных SQL. Однако значительные части этой базы данных только обновляются один раз в день через пакетное задание. Так как запросы на этих таблицах склоняются, действительно являются довольно медленными, я хочу кэшировать результаты.
Прежде, чем прокрутить мое собственное решение, я хотел проверить существующие решения для кэша для Java. Очевидно, я искал stackoverflow и нашел ссылки и рекомендации для ehcache.
Но просматривая документацию кажется, что это только допускает установку времени жизни кэшируемых объектов как продолжительность (например, истеките спустя 1 час, после того, как добавлено), в то время как я хочу истечение на основе установленного времени (например, истеките в 0:30).
Кто-либо знает библиотеку кэша, которая позволяет такое поведение истечения? Или как сделать это с ehcache, если это возможно?
EhCache позволяет программно устанавливать срок действия для отдельного элемента кэша при его создании. Значения, настроенные в ehcache.xml
, являются просто значениями по умолчанию.
Если вы знаете конкретное абсолютное время истечения срока действия элемента, то вы можете вычислить разницу в секундах между "тогда" и "сейчас" (т.е. временем, которое вы добавляете в кэш) и установить это значение в качестве продолжительности времени жизни, используя Element.setTimeToLive()
Вам нужно полноценное решение для кеширования? Вы используете стандартные карты, а затем у вас есть задание по их очистке в нужное время.