Поиск…


Вступление

Redis обеспечивает реализацию шаблона обмена публикацией / подпиской (Pub / Sub). Вместо того, чтобы отправлять сообщения конкретным приемникам, издатели отправляют сообщения заинтересованным получателям через какой-то механизм косвенности. Ресиверы задают интерес к конкретным сообщениям. В Redis эту функцию можно получить с помощью команд PUBLISH и SUBSCRIBE на каналах.

Синтаксис

  • SUBSCRIBE канал [канал ...]
  • UNSUBSCRIBE [канал [канал ...]]
  • Сообщение канала PUBLISH
  • PSUBSCRIBE pattern [pattern ...]
  • PUNSUBSCRIBE [узор [узор ...]]

замечания

Чтобы обрабатывать pub / sub в redis, необходимо иметь одного клиента для подписки и другого клиента для публикации . Оба не могут обрабатываться одним клиентом. Хотя все остальные команды могут обрабатываться одним и тем же клиентом.

Опубликовать и подписаться с redis

Redis публикует / подписывается для отправки сообщений. Это осуществляется путем подписки на канал и публикацию на канал. Да, подписчики подписываются на один или несколько каналов. Издателю не нужно знать, кто все подписчики. Вместо этого издатель будет публиковать на конкретном канале. Все подписчики, подписавшиеся на этот канал, получат сообщение. Эта развязка издателей и подписчиков может обеспечить большую масштабируемость и более динамичную топологию сети.

Пример: Пользователь подписывается на 2 канала, скажем, foo & boo

SUBSCRIBE foo boo

В консоли redis-client1:

127.0.0.1:6379> SUBSCRIBE foo boo
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "foo"
3) (integer) 1
1) "subscribe"
2) "boo"
3) (integer) 2

Он начнет слушать сообщение. На публикацию будут получены данные для соответствующего канала.

Например: когда вы хотите отправить сообщение всем подписчикам, подключенным к boo, необходимо опубликовать их на этом канале.

PUBLISH boo "Hello Boo"

В консоли redis-client1:

1) "message"
2) "boo" //channel name
3) "Hello Boo" //Actual data

Чтобы отказаться от подписки на канал в любой момент, используйте

UNSUBSCRIBE // to unsubscribe from all channels
UNSUBSCRIBE foo // to unsubscribe from specific channel

Также можно подписаться на основе шаблона. Когда имя канала не обязательно / хочет подписаться на основе шаблона, используйте PSUBSCRIBE .

Аналогично отписке, основанной на шаблоне, используйте PUNSUBSCRIBE



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow