English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

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

Redis发布 подписка (pub/sub) - это модель коммуникации сообщений: отправитель (pub) отправляет сообщения, подписчики (sub) получают сообщения.

Клиент Redis может подписаться на любое количество каналов.

На следующем рисунке показаны канал channel1 и три клиента, подписавшиеся на этот канал - client2, client5 и client1, и их之间的关系:

Когда новое сообщение отправляется в канал channel1 через команду PUBLISH, это сообщение будет отправлено трем подписавшимся клиентам:

Онлайн пример

Следующий пример демонстрирует, как работает публикация подписки, необходимо запустить два клиента redis-cli.

В нашем примере мы создали канал подписки с именем w3codeboxChat:

Первый клиент redis-cli

redis 127.0.0.1:6379> SUBSCRIBE w3codeboxChat
Чтение сообщений... (нажмите Ctrl-C для выхода)
1) "subscribe"
2) "redisChat"
3) (integer) 1

Теперь我们先重新启动一个 redis клиент, затем в том же канале w3codeboxChat публикуем два сообщения, подписчики смогут получить сообщения.

Второй клиент redis-cli

redis 127.0.0.1:6379> PUBLISH w3codeboxChat "Redis PUBLISH test"
(integer) 1
redis 127.0.0.1:6379> PUBLISH w3codeboxChat "Learn redis by oldtoolbag.com"
(integer) 1
# Сообщение клиента подписчика будет выглядеть так:
 1) "message"
2) "w3codeboxChat"
3) "Redis PUBLISH test"
 1) "message"
2) "w3codeboxChat"
3) "Learn redis by oldtoolbag.com"

Порядок выполнения такой:

  • Запуск местной службы Redis, запуск двух клиентов redis-cli.

  • ВПервый клиент redis-cliВвести SUBSCRIBE w3codeboxChat, что означает подписаться на канал w3codeboxChat.

  • ВВторой клиент redis-cliВвести PUBLISH w3codeboxChat "Redis PUBLISH test", чтобы отправить сообщение на канал w3codeboxChat. В этот момент на первом клиенте redis-cli можно увидеть тестовое сообщение, отправленное вторым клиентом redis-cli.

Команды Redis для публикации и подписки

В таблице ниже перечислены часто используемые команды redis для публикации и подписки:

НомерКоманды и описание
1PSUBSCRIBE шаблон [шаблон ...]
Подписаться на один или несколько каналов, соответствующих данному шаблону.
2PUBSUB subcommand [аргумент [аргумент ...]]
Просмотреть состояние системы подписки и публикации.
3PUBLISH канал сообщение
Отправить информацию на указанный канал.
4PUNSUBSCRIBE [шаблон [шаблон ...]]
Отменить подписку на все каналы, соответствующие данному шаблону.
5SUBSCRIBE канал [канал ...]
Подписаться на информацию о данном одном или нескольких каналах.
6UNSUBSCRIBE [канал [канал ...]]
Отменить подписку на указанный канал.