Как реализован брокер сообщений в Redis
Python
Middle
Без компании
Как реализован брокер сообщений в Redis
Ответы
В Redis брокер сообщений реализован через механизм Pub/Sub (издатель/подписчик). Это простая и эффективная модель, где:
- **Издатели (publishers)** отправляют сообщения в каналы (channels).
- **Подписчики (subscribers)** слушают каналы и получают сообщения в реальном времени.
Пример:
```
import redis
r = redis.Redis()
# Подписчик
pubsub = r.pubsub()
pubsub.subscribe('my_channel')
for message in pubsub.listen():
if message['type'] == 'message':
print(message['data'])
# Издатель
r.publish('my_channel', 'Hello, Redis!')
```
**Особенности:**
- Нет сохранения сообщений — если подписчик отключен, он не получит пропущенные сообщения.
- Поддержка шаблонов (pattern matching) для подписки на несколько каналов (`PSUBSCRIBE news.*`).
- Минимальные задержки, так как Redis работает в памяти.
Для более сложных сценариев (очереди, отложенные сообщения) можно использовать **Redis Streams** или **List** с командами `LPUSH`/`BRPOP`.