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