Кэширование методов с помощью Spring boot и Hazelcast. Как и где указать интервалы обновления / перезагрузки?

Я понимаю, что аннотация @Cacheable помогает мне кэшировать результат вызова определенного метода, а последующие вызовы возвращаются из кеша, если нет изменений в аргументах и ​​т. Д.

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

Как я могу указать такие интервалы перезагрузки / обновления.

Я пытаюсь использовать Spring boot и hazelcast. Все примеры, которые я видел, говорят об указании политик LRU LFU и т. Д. В файле конфигурации для карт и т. Д., Но ничего на уровне метода. Я не могу использовать политики выселения LRU / LFU и т. Д., Поскольку я намерен перезагружать все данные таблицы каждые x часов или x дней.

Пожалуйста, помогите или укажите мне любую такую ​​реализацию, документы и т. Д.


person Chetya    schedule 17.02.2016    source источник


Ответы (1)


Spring @Cacheable не поддерживает такого рода политики на уровне методов. См., Например, код для CacheableOperation.

Если вы используете hazelcast в качестве поставщика кеша для Spring, вы можете явно исключить элементы или загрузить данные, используя соответствующий IMap из вашего HazelcastInstance.

person Jérémie B    schedule 17.02.2016