Redis как очередь и как распределённая блокировка: что работает, а что миф?
Как очередь Redis годится в двух видах. List + BRPOP — простейший вариант, но сообщение теряется, если воркер упал после извлечения; частично лечится LMOVE в «обрабатываемый» список. Stream + группы потребителей — почти настоящий брокер: сообщения не удаляются при чтении, есть подтверждение XACK, список зависших сообщений XPENDING и передача владения XCLAIM; этого хватает для большинства фоновых задач. Как блокировка — SET key value NX PX ttl с уникальным токеном и снятием через Lua-скрипт, сверяющий токен. Важно понимать границу: такая блокировка не даёт гарантий взаимного исключения при остановке процесса, задержках сети или уходе часов — она снижает вероятность конфликта, но не устраняет его. Алгоритм Redlock на нескольких независимых узлах эту границу не отменяет и остаётся предметом спора; критичные инварианты защищают в базе — уникальным индексом, условным UPDATE, версией строки.