У меня есть операция, которую нужно выполнить N раз и не более.Операция выполняется многими возможно параллельными процессами, которые получают запросы.Процесс должен проверить, не превысил ли счетчик N, и, если нет, увеличить счетчик и выполнить операцию.Я полагаю, что я мог бы использовать счетчик Redis для этого.
Howerver, если я просто GET
, а затем INCR
значение, которое я мог бы встретить в состоянии гонки, что приведет к выполнению операции более чем N раз,Как мне выполнить какую-то операцию test-and-incr
с Redis?
Я знаю, что могу использовать WATCH
, но это оптимистичная блокировка.Я ожидаю, что будет очень много столкновений каждую секунду.Это приведет к большому количеству сбоев.Может быть, я мог бы просто обернуть простые GET
и INCR
каким-нибудь внешним мьютексом.Но я не уверен, достаточно ли это для производительности.