Как сделать так, чтобы положить все атомное?
Я использую версию Infinispan 7.2.5, чтобы сделать в кэш-памяти. для доступа к этому кешу я использую Hotrod. Итак, у меня есть сервер hotrod, работающий в режиме кластера, и тот множественный клиент, который может получить доступ к серверу с помощью клиента hotrod.
Я делаю операцию putAll, чтобы поместить данные в кэш. Теперь у меня есть требование, когда мы хотим поместить все или ничего в кеш, так что я имею в виду, что либо putAll должен быть в состоянии поместить все данные в кеш, либо в случае неудачи ничего не следует добавлять в кеш. Я просматривал документацию infinispan, чтобы проверить, является ли putAll атомарным, но согласно документации это не так.
Итак, мой вопрос:
- Как сделать putAlll атомарным для достижения потребности?
Я также думал сделать кэш транзакции, но не уверен, решит ли это мою проблему, не сильно повлияв на производительность?
Любое предложение здесь будет оценено.
1 ответ
Infinispan не поддерживает транзакции через Hot Rod(*), а putAll не является атомарным. Он также не является атомарным в нетранзакционном встроенном режиме.
Лучший обходной путь - запуск транзакций и запуск транзакции вручную из сценария.
(*) Поддержка на стороне сервера уже включена, но на стороне клиента еще не реализована. Реализация клиента находится на дорожной карте для 9.3 или 9.4 (могут быть изменены).