Встречается на собеседованиях • сегодня

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

В Redis Pub/Sub нет встроенной гарантии доставки сообщений — это fire-and-forget механизм. Если подписчик оффлайн, сообщения теряются.

Альтернативы:

  1. Streams (лучший вариант) — сохраняют сообщения, поддерживают подтверждение (ack) и группы потребителей.
python
# 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) # Подтверждение

text

2. **Репликация + RDB/AOF** — для durability, но не гарантирует доставку подписчику.  
3. **Внешние системы** (Kafka, RabbitMQ) — если нужны строгие гарантии.  

**Вывод:** Используйте Redis Streams для persistence и подтверждений.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы