С точки зрения Laymen, что такое Redis Pub / Sub? - PullRequest
17 голосов
/ 26 апреля 2011

Зачем мне это использовать? Приведите несколько очень простых примеров.

1 Ответ

26 голосов
/ 26 апреля 2011

Клиент Redis подписывается на получение сообщений, помеченных специальным тегом, называемым channel . Другие клиенты публикуют на этом канале. Redis уведомляет каждого подписывающегося клиента каждый раз, когда сообщение публикуется кем-либо на канале.

Вы также можете подписаться на шаблон канала - подумайте о сопоставлении с регулярным выражением.

Это помогает сделать код распространяемым . Он позволяет выполнять фрагменты кода в разных процессах и, возможно, даже на разных машинах, а также связываться друг с другом через эти очереди.

Эта функция происходит от повторных запросов пользователя . Вот пример использования, приведенный здесь :

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

Фоновый кеш рабочего процесса подписывается на все каналы, которые начинаются с "new.article.":

redis> PSUBSCRIBE new.article.*

Процесс публикации статьи создает новая статья о технологии (в этом Например, эта статья имеет идентификатор «1021»), добавляет идентификатор статьи к набору все технологические статьи и публикует идентификатор статьи в Канал "new.article.technology":

redis> MULTI
OK
redis> SET article.technology.1021 "In today's technology news, ..."
QUEUED
redis> SADD article.technology 1021
QUEUED
redis> PUBLISH new.article.technology 1021
QUEUED
redis> EXEC
1. OK
2. (integer) 1
3. (integer) 1

На данный момент фоновый кеш рабочий процесс получит сообщение и сразу узнаю, что новый была опубликована технологическая статья, впоследствии выполняя соответствующие обратный вызов для повторного создания домашней страницы.

http://redis.io/topics/pubsub

...