2015-01-02 4 views
1

Я использую экземпляр org.infinispan.Cache (Infinispan API), поэтому его очень легко положить, удалить, найти объекты.Обновление объектов Infinispan, поддерживающих время истечения срока действия

Объект, который я поставил, имеет фиксированный срок службы. Например, я ставлю объект продолжительностью 5 минут. Во время жизни этого объекта я хочу изменить некоторые атрибуты, но я хочу сохранить первоначальную продолжительность жизни. Например, через 2 минуты я обновляю объект. Я хочу, чтобы мой объект истекал через 3 минуты после обновления.

Я думаю, что простой способ - получить объект, вычислить оставшуюся продолжительность жизни и вызвать метод replace() в API кеша с оставшейся продолжительностью жизни. Но этот метод немного сложный.

Я рассмотрел API org.infinispan.Cache и не смог найти простой способ обновить/заменить объект и сохранить первоначальную продолжительность жизни. Все методы получают продолжительность жизни в качестве аргументов.

Есть ли простой способ обновления объектов infinispan, поддерживающих первоначальную продолжительность жизни?

спасибо!

ответ

1

Единственный другой вариант - изменить ваши объекты напрямую. Это будет работать, если ваш кеш не кластеризован, и вы не используете хранилище кэш-памяти и не включаете store-as-binary.

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