Ответ 1
В основном в Redis есть две разные модели обмена сообщениями:
- Пожар и забудьте/от одного до многих: Pub/Sub. Во время сообщения PUBLISH-ed все подписчики получат его, но это сообщение будет потеряно навсегда. Если клиент не был подписан, нет способа вернуть его.
- Сохраняющиеся очереди/один к одному: списки, возможно, используемые с такими командами блокировки, как BLPOP. В списках у вас есть продюсер, который вставляет список, а один или многие пользователи ждут элементы, но одно сообщение будет доступно только одному из ожидающих клиентов. Со списками у вас есть настойчивость, и сообщения будут ждать, пока клиент вытолкнет их, а не исчезнет. Так что даже если никто не слушает, есть отставание (такое же большое, как и ваша доступная память, или вы можете ограничить отставание с помощью LTRIM).
Надеюсь, это ясно. Я предлагаю вам изучить следующие команды, чтобы больше узнать о семантике Redis и обмена сообщениями:
- LPUSH/RPUSH, RPOP/LPOP, BRPOP/BLPOP
- ПУБЛИКАЦИЯ, ПОДПИСАТЬСЯ, ПОДПИСАТЬСЯ
Doc для этих команд доступен по адресу redis.io