Подписка по шаблону с PSUBSCRIBE
На этом шаге вы научитесь подписываться на каналы, используя шаблоны, с помощью команды PSUBSCRIBE в Redis. PSUBSCRIBE позволяет подписываться на несколько каналов, соответствующих указанному шаблону. Это полезно, когда вы хотите получать сообщения из группы связанных каналов, не подписываясь на каждый из них по отдельности.
Терминал 1: Подписка по шаблону
Поскольку вы отписались от mychannel на предыдущем шаге, в Терминале 1 теперь должен отображаться обычный приглашение Redis.
В Терминале 1 подпишитесь на каналы, соответствующие шаблону news.*, используя команду PSUBSCRIBE:
PSUBSCRIBE news.*
Вывод будет выглядеть примерно так:
Reading messages... (press Ctrl-C to quit)
1) "psubscribe"
2) "news.*"
3) (integer) 1
Разберем вывод:
"psubscribe": Это указывает на то, что вы успешно подписались на шаблон.
"news.*": Это шаблон, на который вы подписались. .* является подстановочным знаком, который соответствует любым символам.
(integer) 1: Это количество шаблонов, на которые вы в данный момент подписаны.
Терминал 2: Публикация в каналы, соответствующие шаблону
Перейдите в Терминал 2 и опубликуйте сообщение в канал news.sports, используя команду PUBLISH:
PUBLISH news.sports "Sports news update!"
Вывод в Терминале 2 будет представлять собой количество подписчиков, получивших сообщение:
(integer) 1
Наблюдение за совпадением шаблона
Вернитесь в Терминал 1 (где вы подписались на шаблон). Вы должны увидеть только что опубликованное сообщение:
1) "pmessage"
2) "news.*"
3) "news.sports"
4) "Sports news update!"
Это показывает:
"pmessage": Указывает, что это сообщение, соответствующее шаблону.
"news.*": Шаблон, который совпал.
"news.sports": Фактический канал, в который было опубликовано сообщение.
"Sports news update!": Содержимое сообщения.
Тестирование нескольких каналов
В Терминале 2 попробуйте опубликовать сообщения в разные каналы, соответствующие шаблону:
PUBLISH news.technology "New AI breakthrough!"
PUBLISH news.weather "Sunny skies ahead!"
PUBLISH sports.basketball "This won't match the pattern"
Наблюдайте в Терминале 1, что будут получены только сообщения из каналов news.*, в то время как sports.basketball не будет получен, поскольку он не соответствует шаблону news.*.
Важно: Оставьте оба терминала и их сессии redis-cli активными. Подписка по шаблону демонстрирует, как вы можете одновременно прослушивать несколько связанных каналов.