Обмен сообщениями Redis Pub/Sub

RedisRedisBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL redis(("Redis")) -.-> redis/RedisGroup(["Redis"]) redis/RedisGroup -.-> redis/access_cli("Connect Using CLI") subgraph Lab Skills redis/access_cli -.-> lab-552102{{"Обмен сообщениями Redis Pub/Sub"}} end

Подписка на канал с помощью SUBSCRIBE

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

Сначала откройте терминал. Вы можете использовать терминал Xfce, предоставленный в среде LabEx.

Теперь подключитесь к серверу Redis с помощью команды redis-cli:

redis-cli

Вы должны увидеть приглашение Redis: 127.0.0.1:6379>.

Далее, подпишитесь на канал с именем mychannel с помощью команды SUBSCRIBE:

SUBSCRIBE mychannel

Вывод будет выглядеть примерно так:

Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "mychannel"
3) (integer) 1

Давайте разберем вывод:

  • "subscribe": Это указывает на то, что вы успешно подписались на канал.
  • "mychannel": Это имя канала, на который вы подписались.
  • (integer) 1: Это количество каналов, на которые вы в настоящее время подписаны.

Важно оставить этот терминал открытым и подписанным на канал. Мы будем использовать другой терминал для публикации сообщений.

Теперь выйдите из redis-cli в этом терминале. Это важно для правильной регистрации истории команд. Нажмите Ctrl+C, чтобы остановить подписку, затем введите exit и нажмите Enter.

exit

Публикация сообщений с помощью PUBLISH

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

Откройте новый терминал. Вы можете использовать предоставленный терминал Xfce.

Подключитесь к серверу Redis с помощью команды redis-cli:

redis-cli

Вы должны увидеть приглашение Redis: 127.0.0.1:6379>.

Теперь опубликуйте сообщение в канал mychannel с помощью команды PUBLISH:

PUBLISH mychannel "Hello, Redis!"

Вывод будет представлять собой количество клиентов, получивших сообщение:

(integer) 1

В этом случае вывод равен (integer) 1, потому что вы подписались на mychannel на предыдущем шаге. Если бы вы не подписались, вывод был бы (integer) 0.

Теперь выйдите из redis-cli в этом терминале.

exit

Вернитесь к первому терминалу (где вы подписались на mychannel на шаге 1). Вы должны увидеть сообщение, которое вы только что опубликовали. Если вы закрыли этот терминал, вам нужно будет открыть новый терминал и повторно подписаться на mychannel с помощью команды SUBSCRIBE mychannel.

redis-cli
SUBSCRIBE mychannel

Держите этот терминал открытым и подписанным.

Отписка с помощью UNSUBSCRIBE

В этом шаге вы узнаете, как отписаться от канала в Redis с помощью команды UNSUBSCRIBE. Отписка удаляет клиента из списка подписчиков определенного канала, предотвращая получение им дальнейших сообщений, опубликованных в этом канале.

Продолжая с предыдущих шагов, у вас должен быть открыт один терминал, подписанный на mychannel.

В этом терминале выполните следующую команду, чтобы отписаться от канала mychannel:

UNSUBSCRIBE mychannel

Вывод будет выглядеть так:

1) "unsubscribe"
2) "mychannel"
3) (integer) 0

Давайте разберем вывод:

  • "unsubscribe": Это указывает на то, что вы отписались от канала.
  • "mychannel": Это имя канала, от которого вы отписались.
  • (integer) 0: Это количество каналов, на которые вы в настоящее время подписаны. Теперь оно равно 0, потому что вы отписались от mychannel.

Теперь выйдите из redis-cli в этом терминале.

exit

Откройте новый терминал и подключитесь к Redis:

redis-cli

Опубликуйте еще одно сообщение в mychannel:

PUBLISH mychannel "Is anyone still there?"

Вывод в этом терминале будет:

(integer) 0

Это указывает на то, что ни один клиент не получил сообщение, потому что вы отписались на предыдущем шаге.

Теперь выйдите из redis-cli в этом терминале.

exit

Это демонстрирует, как отписаться от канала, предотвращая получение вами дальнейших сообщений, опубликованных в этом канале.

Подписка по шаблону с помощью PSUBSCRIBE

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

Откройте терминал.

Подключитесь к серверу Redis с помощью команды redis-cli:

redis-cli

Теперь подпишитесь на каналы, соответствующие шаблону news.*, с помощью команды PSUBSCRIBE:

PSUBSCRIBE news.*

Вывод будет выглядеть примерно так:

Reading messages... (press Ctrl-C to quit)
1) "psubscribe"
2) "news.*"
3) (integer) 1

Давайте разберем вывод:

  • "psubscribe": Это указывает на то, что вы успешно подписались на шаблон.
  • "news.*": Это шаблон, на который вы подписались. .* — это подстановочный знак (wildcard), который соответствует любым символам.
  • (integer) 1: Это количество шаблонов, на которые вы в настоящее время подписаны.

Держите этот терминал открытым и подписанным.

Теперь выйдите из redis-cli в этом терминале.

exit

Откройте новый терминал и подключитесь к Redis:

redis-cli

Опубликуйте сообщение в канал news.sports с помощью команды PUBLISH:

PUBLISH news.sports "Sports news update!"

Вывод в этом терминале будет представлять собой количество подписчиков, получивших сообщение:

(integer) 1

Теперь выйдите из redis-cli в этом терминале.

exit

Вернитесь к первому терминалу (где вы подписались на шаблон). Вы должны увидеть сообщение, которое вы только что опубликовали. Если вы закрыли этот терминал, вам нужно будет открыть новый терминал и повторно подписаться на news.* с помощью команды PSUBSCRIBE news.*.

redis-cli
PSUBSCRIBE news.*

Держите этот терминал открытым и подписанным.

Итог

В этой лабораторной работе вы изучили основы обмена сообщениями Redis Pub/Sub (Publish/Subscribe). Вы узнали, как подписываться на каналы с помощью команды SUBSCRIBE, публиковать сообщения в каналы с помощью команды PUBLISH, отписываться от каналов с помощью команды UNSUBSCRIBE и подписываться на каналы, используя шаблоны, с помощью команды PSUBSCRIBE. Эти команды необходимы для создания приложений обмена сообщениями в реальном времени с помощью Redis.