我目前有兴趣查看我拥有的 Redis 发布/订阅应用程序中订阅了哪些频道。当客户端连接到我们的服务器时,我们将它们注册到如下所示的通道:
user:user_id
这样做的原因是我希望能够看到谁“在线”。我目前在不知道客户是否在线的情况下盲目地向频道发送消息,因为他们接收这些类型的消息并不重要。
为了使我的应用程序更智能,我希望能够发现客户端是否在线或不使用 pub/sub API,如果他们离线,将他们的消息缓存到一个单独的 redis 队列,我可以推送当他们重新上线时发给他们。
这不一定是 100% 准确,但越准确越好。我假设订阅频道时不会创建通用密钥,所以我不能做一些微不足道的事情:
redis-cli keys user*
查找所有在线用户。
我想到的另一个策略是在用户发布或从频道中删除自己时维护我自己的 Redis Set(当他们在线并关闭应用程序时客户端会自动处理)。这将是我需要管理的另一层复杂性,我希望有一种更简单的方法来处理已经可用的数据。