Jarmod действительно лучший ответ, когда вам нужно только по модулю. Но в других случаях использования вам может потребоваться более сложная логика, которая должна происходить во время записи, и, возможно, нет способа отложить ее до времени чтения.
В таких случаях вы можете использовать оптимистическая блокировка : клиент считывает старое значение, вычисляет новое значение по любой формуле и затем записывает новое значение обратно;Атомность достигается путем чтения номера версии из элемента и записи нового значения обратно с условием , что номер версии не изменился (если он изменился, вам нужно повторить процесс).
Когда конкуренция низка, оптимистическая блокировка только добавляет небольшую стоимость по сравнению с простым приращением счетчика (добавляет последовательное чтение, которое стоит меньше половины записи). Однако, если количество конфликтов велико, т. Е. Очень часто многие клиенты пытаются одновременно обновить одно и то же значение, повторные попытки могут значительно увеличить ваш счет.