Подканальная память Redis Pub

#memory #redis #publish-subscribe

#память #redis #опубликовать-подписаться

Вопрос:

Какие механизмы использует Redis для хранения сообщений в памяти в случае pub-sub? Если ни один клиент не подписан, что происходит с сообщениями? Будет ли Redis буферизировать их? Есть ли способ настроить минимальное значение. и макс. память, выделенная на канал?

Ответ №1:

Redis не сохраняет сообщения в памяти в контексте Pub / Sub, как вы можете видеть в реализации (x):

  1. сообщение отправляется клиентам, прослушивающим этот канал (если таковой имеется),
  2. сообщение отправляется клиентам, прослушивающим соответствующие каналы (если таковые имеются).

Затем Redis просто возвращает, сколько клиентов получили сообщение (имея в виду, что клиент может получать одно сообщение несколько раз, например, если совпадают несколько шаблонов).

Если клиент не подписан, Redis просто возвращает 0, и сообщение не записывается / не буферизуется:

 > publish foo test
(integer) 0
  

(x) в основном Redis перебирает список подписанных клиентов и отправляет ответ с сообщением.