написать впереди
2020年面试必备的Java后端进阶面试题总结了一份复习指南在Github上,内容详细,图文并茂,有需要学习的朋友可以Star一下! Адрес гитхаба:GitHub.com/thinking Хан…
1. Архитектура публикации и подписки Redis
Redis предоставляет функцию публикации и подписки, которую можно использовать для передачи сообщений.Механизм публикации и подписки Redis включает три части: издатель, подписчик и канал.
2. Функция публикации и подписки Redis
(1) Отправить сообщение
Redis использует команду PUBLISH для отправки сообщений, а возвращаемое значение — это количество подписчиков, получивших сообщение.
(2) Подписаться на канал
Redis использует команду SUBSCRIBE для подписки на канал.Возвращаемое значение включает в себя канал, на который подписан клиент, количество каналов, на которые в настоящее время подписано, и полученные сообщения, где subscribe указывает, что канал был успешно подписан.
(3) Сопоставление с образцом
Функция сопоставления шаблонов позволяет клиентам подписываться на каналы, соответствующие шаблону. Redis использует PSUBSCRIBE для подписки на все каналы, соответствующие шаблону. Используйте ""представляет режим","Может быть заменено любым значением.
(4) Отменить подписку
Redis использует команды UNSUBSCRIBE и PUNSUBSCRIBE для отказа от подписки, и возвращаемое значение аналогично подписке. Поскольку операция подписки Redis блокируется, после того, как клиент подпишется на канал или режим, он останется в состоянии подписки до выхода. В командах SUBSCRIBE, PSUBSCRIBE, UNSUBSCRIBE и PUNSUBSCRIBE возвращаемое значение содержит количество каналов и режимов, на которые в данный момент подписан клиент.Когда это число становится равным 0, клиент автоматически выходит из состояния подписки.
3. Реализация публикации и подписки Redis
Поскольку Redis — это система с открытым исходным кодом, мы можем просмотреть детали внутренней реализации через ее исходный код.
(1) ПОДПИСАТЬСЯ
(2) PПОДПИСАТЬСЯ
(3) ПУБЛИКАЦИЯ
4. Приложение Redis для публикации и подписки в Redis
Функция публикации и подписки Redis не имеет ничего общего с хранилищем данных в Redis, она не повлияет на пространство ключей Redis, то есть не повлияет на данные, хранящиеся в Redis, но через механизм публикации и подписки Redis также предоставляет другую функцию, а именно Keyspace Notification, которая позволяет клиентам узнать, есть ли события, которые изменяют данные в Redis, подписавшись на определенный канал. Например, если клиент удаляет данные, ключ которых является mykey в Redis, эта операция вызовет два сообщения, mykey del и del mykey, первое из которых относится к keyapce канала, указывающее на изменение пространства ключей, а второе принадлежит ключевое событие канала, указывающее, что выполнение выполняется.
5. Сравнение между публикацией и подпиской Redis и ActiveMQ
(1) ActiveMQ поддерживает различные протоколы сообщений, включая AMQP, MQTT, Stomp и т. д., а также поддерживает спецификацию JMS, но Redis не поддерживает эти протоколы; (2) ActiveMQ обеспечивает постоянство, но Redis не может постоянно хранить сообщения.После отправки сообщения, если его не получат подписчики, сообщение будет потеряно; (3) ActiveMQ предоставляет гарантию передачи сообщения. Когда время ожидания подключения клиента истекает или происходит откат транзакции, сообщение будет повторно отправлено клиенту. Redis не предоставляет гарантию передачи сообщения. Короче говоря, функции, предоставляемые ActiveMQ, намного сложнее, чем функция публикации и подписки Redis.В конце концов, Redis не предназначен для публикации и подписки, но если Redis уже существует в системе и требуются базовые функции публикации и подписки, необходимо установить ActiveMQ, т.к. большинство функций, предоставляемых ActiveMQ, могут не использоваться, а механизм публикации и подписки Redis может удовлетворить потребности.