#memory #redis #publish-subscribe
#память #redis #опубликовать-подписаться
Вопрос:
Какие механизмы использует Redis для хранения сообщений в памяти в случае pub-sub? Если ни один клиент не подписан, что происходит с сообщениями? Будет ли Redis буферизировать их? Есть ли способ настроить минимальное значение. и макс. память, выделенная на канал?
Ответ №1:
Redis не сохраняет сообщения в памяти в контексте Pub / Sub, как вы можете видеть в реализации (x):
- сообщение отправляется клиентам, прослушивающим этот канал (если таковой имеется),
- сообщение отправляется клиентам, прослушивающим соответствующие каналы (если таковые имеются).
Затем Redis просто возвращает, сколько клиентов получили сообщение (имея в виду, что клиент может получать одно сообщение несколько раз, например, если совпадают несколько шаблонов).
Если клиент не подписан, Redis просто возвращает 0, и сообщение не записывается / не буферизуется:
> publish foo test
(integer) 0
(x) в основном Redis перебирает список подписанных клиентов и отправляет ответ с сообщением.