В настоящее время мне интересно посмотреть, на какие каналы подписаны мои публикации/подписки Redis. Когда клиент подключается к нашему серверу, мы регистрируем его в канале, который выглядит так:
user:user_id
Причина этого в том, что я хочу иметь возможность видеть, кто находится «в сети». В настоящее время я вслепую отправляю сообщения на канал, не зная, находится ли клиент в сети, поскольку получение им сообщений такого типа не критично.
Стремясь сделать свое приложение более интеллектуальным, я хотел бы иметь возможность определять, находится ли клиент в сети или не использует API публикации/подписки, и, если они не в сети, кэшировать их сообщения в отдельную очередь Redis, которая Я могу надавить на них, когда они вернутся в онлайн.
Это не обязательно должно быть на 100% точным, но чем оно точнее, тем лучше. Я предполагаю, что общий ключ не создается при подписке на канал, поэтому я не могу сделать что-то тривиальное, например:
redis-cli keys user*
, чтобы найти всех онлайн-пользователей.
Другая стратегия, о которой я подумал, заключается в том, чтобы просто поддерживать свой собственный Redis Set всякий раз, когда пользователь публикует или удаляет себя из канала (что клиент автоматически обрабатывает, когда они подключаются к сети и закрывают приложение). Это будет дополнительным уровнем сложности, с которым мне нужно справиться, и я надеюсь, что есть более тривиальный подход к уже доступным данным.