Redis является однопоточным, поэтому запуск Lua Script всегда атомарен.Затем вы можете определить Lua-скрипт для своего экземпляра Redis и запустить его из своих экземпляров Spring.
Ваш Lua-скрипт будет просто последовательностью операций, выполняемых с вашим экземпляром Redis (единственной, которая имеет правильное значениевашей акции) и возвращает новое значение, например, или ошибку, если значение является отрицательным.
Ваш скрипт Lua - это, в основном, транзакция Redis, есть и другие методы для выполнения транзакции Redis, но IMHO Lua - самый простой из всех (возможно, наименее производительный, но я обнаружил, что в большинстве случаев он достаточно быстрый).