Я строю что-то вроде линии задержки: один процесс RPUSHes объекты в список, другой LPOP их в том же порядке.
Хитрость в том, что объекты должны быть извлечены из списка только через час после их добавления. Я мог бы использовать отметку времени для этого. Задержка одинакова для всех предметов и никогда не меняется.
Теперь, как мне реализовать pop в дружественном для параллелизма способе (чтобы он все еще работал, когда несколько рабочих получают доступ к этому списку)? Я мог бы достать предмет, проверить временную метку и вернуть ее в список, если еще слишком рано. Но если несколько рабочих делают это одновременно, это может испортить порядок вещей. Я мог бы проверить первый пункт и выскочить, только если он должен. Но другой работник мог бы вытащить его тогда, поэтому я вставил не тот.
Должен ли я использовать команду WATCH? Как? Должен ли я использовать отсортированные наборы вместо списка? Помощь оценена!