我一直在为我正在构建的系统使用 Redis 和 Faye。我仍然不确定它们是否是我特定应用的最佳选择。
我的目标
每个用户都可以向 channel /主题发布消息,并从他订阅的主题接收消息。主题必须具有层次结构(即主题“B”是主题“A”的子主题,因此主题之间存在“A->B”关系)。如果用户订阅了一个子主题,他只会收到来自该主题的消息(他订阅了“A->B”中的“B”,并且只会收到“B”中的消息)。如果用户订阅主主题,他会收到子主题的所有消息(他订阅了“A”并收到“B”和“A”的其他子主题的消息)。
用户应该使用推送通知 (Android/Apple) 在他们的移动设备上接收通知。
我尝试做什么
我试图通过向层次结构的所有 channel 发布消息来模拟层次结构。假设我们有这样的层次结构:“A->B->C”“A->B->D”,因此 B 有两个子主题。
发布到 C 意味着发布者将消息发送到 channel “A”、“B”和“C”。 发布到 D 意味着,对于发布者来说,将消息发送到 channel “A”、“B”和“D”。
问题
使用由 Redis 支持的 Faye 或仅使用 Redis 是否有更好的方法来做到这一点? 如果这是最好的方法,它如何随着发布者/订阅者和主题数量的增加而扩展? 如何通过移动推送API实现流更新?
最佳答案
你应该考虑 redis 中的 PSUBSCRIBE 命令。
使用 PSUBSCRIBE 客户端订阅模式而不是单个 key 。
您可以轻松地在键命名中对层次结构进行编码(假设您有主题:A:B:C),当客户端订阅主题:A:* 时,它将收到发布在主题:A:B 和主题: A:B:C
关于redis - Redis 和 Faye 中的分层 Pub/Sub 和推送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16130128/