Мой прецедент заключается в том, что мне нужно реализовать кеш поверх службы, которая должна истекать через определенные промежутки времени (с момента создания).Есть ли какой-либо сторонний java-кеш, который обеспечивает контроль над событием истечения срока?
И если срок действия истек, то поиск службы должен быть выполнен для получения последней записи. позволяет вызвать обновление службы.
Но, скажем, если обновление службы завершается с ошибкой, тогда я должен иметь возможность использовать устаревшие данные в кеше.
Но поскольку кеш уже истек, у меня нет этой записи.
Итак, я думаю, что контроль истечения срока хранения кеша и кэша истекает только в том случае, если служба доступна для получения последних данных, иначе не удаляйте эту запись.
Я искал кеш Google Guava, но он предоставляет только removeListener, который просто уведомляет меня об этом событии, но я не могу контролировать это событие.
Есть ли какая-либо сторонняя реализация кеша, которая может служить моей цели?
Похоже, вы не хотите истечения срока действия, но 'refreshAfterWrite', поскольку вы не хотите, чтобы запись удалялась (обновлялось только ее значение). –
Does ** refreshAfterWrite ** обновлять только одну запись после заданной продолжительности времени или всего кеша? И если какое-либо исключение бросается во время обновления, то будет ли предыдущая запись сохранена, как есть, или будет выбрано исключение? И я проверил, он требует асинхронного переопределения метода reload(). Не могли бы вы объяснить мне, почему асинхронно? –
Это запись, предыдущее значение возвращается во время перезагрузки и выполняется либо в потоке первого вызывающего, либо может быть полностью асинхронным. Если вам требуется полное периодическое обновление, проще всего просто использовать «ScheduledExecutorService». –