Redis имеет две операции LPUSH
и BLPOP
BLPOP
- блокирует всех клиентов до тех пор, пока в список не будет вставлен элемент.BLPOP
разблокирует только одного клиента (тот, который ждет самое длинное время)
LPUSH
- помещает элемент в список
Можем ли мы реализовать распределенную блокировку, используя эти два примитива?Я думал, что lock
& unlock
будет что-то вроде
LOCK:
BLPOP key timeout
UNLOCK
LPUSH key dummy-value
Инициализация блокировки может инициализировать список с начальной dummy-value
Удовлетворяет ли это жизнеспособность, прогресс и безопасность?