Как гарантировать доставку в Redis Pub/Sub

Python Senior Без компании
Как гарантировать доставку в Redis Pub/Sub
Ответы
В Redis Pub/Sub нет встроенной гарантии доставки сообщений — это fire-and-forget механизм. Если подписчик оффлайн, сообщения теряются. **Альтернативы:** - **Streams** (лучший вариант) — сохраняют сообщения, поддерживают подтверждение (ack) и группы потребителей. ``` # Producer r = redis.Redis() r.xadd('mystream', {'data': 'value'}) # Consumer (группа) r.xgroup_create('mystream', 'mygroup', id='0') messages = r.xreadgroup('mygroup', 'consumer1', {'mystream': '>'}, count=1) r.xack('mystream', 'mygroup', message_id) # Подтверждение ``` - **Репликация + RDB/AOF** — для durability, но не гарантирует доставку подписчику. - **Внешние системы** (Kafka, RabbitMQ) — если нужны строгие гарантии. **Вывод:** Используйте Redis Streams для persistence и подтверждений.