Приложение My Node.js принимает подключения извне. Каждый обработчик соединения читает SET на Redis, в конечном итоге изменяет сам набор, а затем продолжает. Проблема состоит в том, что в то же время другое асинхронное соединение может попытаться прочитать тот же самый SET и попытаться обновить его или решить его следующий шаг на основе того, что оно читает.
Я знаю, что Redis старается быть атомарным, но этого недостаточно для моего случая использования. Подумайте об этом: набор читается, чтобы понять, является ли он ПОЛНЫМ (для этого есть бизнес-правило). Если он ПОЛНЫЙ, то что-то происходит. Проблема в том, что если остался только один слот, два полуконкурентных соединения могут считать каждое последним. И я получаю переполнение.
Есть ли способ удерживать соединение "в ожидании" в течение очень короткого времени, когда другому в конечном итоге потребуется обновить установленное состояние?
Я думаю, что это угловой случай, очень-очень неудачно ... но вы знаете:)
Использование другого ключа в качестве «замка» является опцией, или он воняет?