Настройка политик обновления в Ehcache

Можно ли указать политику обновления данных в Ehcache? В настоящее время я переносу приложение из OSCache в Ehcache, и я не могу найти какой-либо способ указать, когда элемент нуждается в обновлении, кроме настройки timeToIdle а также timeToLive,

То, что я хочу: при доступе к элементу из кэша, проверьте его связанный ресурс, чтобы увидеть, если он был обновлен позже, чем lastUpdateTime элемента кеша. Если да, обновите кеш; остальное подать контент из кеша.

В OSCache это было сделано путем ловли NeedsRefreshExceptions и настройка пользовательских политик обновления для элементов. Некоторое время я копался в документах, но я не смог найти никаких методов или примеров того, как я мог бы сделать это в Ehcache.

Любая помощь будет оценена:).

Alex

1 ответ

Решение

Идея OSCache о NeedsRefreshException действительно ущербный. Во-первых, это противоречит совету использовать исключения для обычного потока выполнения (и да, я считаю устаревшее попадание в кэш обычным потоком); во-вторых, создать исключение для этого действительно дорого.

Теперь вернемся к вашему вопросу. Если бы я был на вашем месте, я бы оценил возможность продления net.sf.ehcache.Elementили оберните ваше входное значение в объект, который сможет проверить timeToLive,

Но главный вопрос в том, зачем вам это нужно? Если вы помещаете объект в кэш и указываете TTL, зачем беспокоиться о проверке TTL при получении? Кэш должен быть в состоянии выселить объект без какой-либо внешней помощи. То же самое относится к случаям, когда вы удаляете запись вручную (например, когда объект был изменен). Может я что-то здесь упускаю?

Функция, о которой вы спрашиваете, называется сквозной. Как это сделать, объясняется здесь: http://ehcache.org/documentation/concepts.html

-
еще один несчастный пользователь OSCache, ожидающий перехода на EHCache:(

Другие вопросы по тегам