PRO

Что такое Pub/Sub в Redis?

Pub/Sub в Redis — механизм публикации и подписки на сообщения. Отправитель публикует сообщение в канал, а все подключённые подписчики этого канала получают его сразу; сообщения не сохраняются, поэтому отключившийся подписчик пропустит публикации.
Подробный ответ

Как работает Pub/Sub

Pub/Sub расшифровывается как publish/subscribe, то есть «публикация/подписка». Отправитель не знает получателей: он публикует сообщение в канал, а Redis передаёт его всем активным подписчикам этого канала.

SUBSCRIBE notifications
PUBLISH notifications "New order created"

Пример применения

API service
  |
PUBLISH user:42:notifications
  |
Redis channel
  |
+-------------------------+
|                         |
WebSocket gateway      Notification service
  |                         |
Browser                 Push notification

Подходящие сценарии

  • передача уведомлений активным пользователям;

  • обновление WebSocket-подключений;

  • внутренние краткоживущие сигналы между сервисами;

  • синхронизация кэша между экземплярами приложения.

Главное ограничение

Redis Pub/Sub не хранит сообщения. Если подписчик был отключён, временно недоступен или подключился позже, он не получит пропущенные публикации. Поэтому Pub/Sub не подходит для критичных задач, где нужно гарантированно обработать каждое сообщение.

Pub/Sub и Redis Streams

Redis Streams сохраняет сообщения, имеет идентификаторы записей, группы получателей и подтверждение обработки. Его выбирают, когда нужно восстановить обработку после сбоя или читать историю. Pub/Sub выбирают, когда важно мгновенно передать краткоживущий сигнал только активным подписчикам.

Как ответить на собеседовании

Redis Pub/Sub передаёт сообщение всем активным подписчикам канала. Он подходит для мгновенных уведомлений и WebSocket-сценариев, но не гарантирует доставку и не хранит историю: отключённый подписчик пропустит сообщение. Для надёжной очереди с подтверждениями использую Redis Streams, RabbitMQ или Kafka в зависимости от задачи.

Оцени свой прогресс

Честно оцени своё понимание этого вопроса, чтобы мы могли построить твой учебный трек максимально эффективно.
Читать в блоге