Механизм блокировки хранилища Redis (или любой базы данных?) (NodeJS) - PullRequest
2 голосов
/ 29 февраля 2012

У меня следующая проблема: я использую Redis с NodeJS вместе через драйвер Mranney , и мой веб-сервер NodeJS получает некоторые данные из Redis, делая некоторые операции над ним и сохранение его в Redis. Но эта операция (назовите ее X) может занять некоторое время, поэтому несколько пользователей могут запускать ее одновременно на одних и тех же ресурсах.

Таким образом, если пользователь A запускает X, а пользователь B одновременно запускает X, я хочу, чтобы пользователь A завершил работу, а затем пользователь B получил (обработанные) данные и сделал X. Тем временем пользователь B ждет. Порядок пользователей не имеет значения - только по одному. Так как этого добиться в моем сценарии? Как заблокировать / разблокировать Redis? Это вообще возможно?

1 Ответ

6 голосов
/ 29 февраля 2012

Существует несколько способов реализовать блокировку в Redis, не зная больше о сценарии, похоже, что SETNX будет работать.См. Шаблон проектирования: блокировка с помощью SETNX в документации Redis.Кроме того, транзакции в Redis могут быть интересными для чтения, хотя я подозреваю, что это не совсем то, что вам нужно в этом случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...