У меня есть zset на моем redis, заполненном несколькими элементами.
С другой стороны, у меня есть несколько экземпляров службы , которым нужно "потреблять" эти элементы.
Когда я говорю «потреблять», я имею в виду каждый экземпляр:
- Получить первый элемент из zset
- Я обрабатываю его
- Если все было FINE , удалите его из zset
Проблемы здесь:
- два экземпляра могут обработать один и тот же элемент дважды из-за условий гонки.
С другой стороны, я мог бы вытолкнуть первый элемент:
- Вытащить мне первый элемент из zset
- Я обработал его
- Если что-то было НЕПРАВИЛЬНО , pu sh это снова
Проблемы здесь:
- Если процесс останавливается на шаге
2.
, элемент теряется навсегда, так как он не добавляется в Зсет снова.
Есть идеи?