Как сделать так, чтобы положить все атомное?

Я использую версию Infinispan 7.2.5, чтобы сделать в кэш-памяти. для доступа к этому кешу я использую Hotrod. Итак, у меня есть сервер hotrod, работающий в режиме кластера, и тот множественный клиент, который может получить доступ к серверу с помощью клиента hotrod.

Я делаю операцию putAll, чтобы поместить данные в кэш. Теперь у меня есть требование, когда мы хотим поместить все или ничего в кеш, так что я имею в виду, что либо putAll должен быть в состоянии поместить все данные в кеш, либо в случае неудачи ничего не следует добавлять в кеш. Я просматривал документацию infinispan, чтобы проверить, является ли putAll атомарным, но согласно документации это не так.

Итак, мой вопрос:

  • Как сделать putAlll атомарным для достижения потребности?

Я также думал сделать кэш транзакции, но не уверен, решит ли это мою проблему, не сильно повлияв на производительность?

Любое предложение здесь будет оценено.

1 ответ

Infinispan не поддерживает транзакции через Hot Rod(*), а putAll не является атомарным. Он также не является атомарным в нетранзакционном встроенном режиме.

Лучший обходной путь - запуск транзакций и запуск транзакции вручную из сценария.

(*) Поддержка на стороне сервера уже включена, но на стороне клиента еще не реализована. Реализация клиента находится на дорожной карте для 9.3 или 9.4 (могут быть изменены).

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