3

我一直在使用 Redis 和 Faye 来构建我正在构建的系统。我仍然不确定它们是否是我特定应用的最佳选择。

我的目标

每个用户都可以向频道/主题发布消息,并从他订阅的主题接收消息。主题必须具有层次结构(即主题“B”是主题“A”的子主题,因此主题之间存在“A->B”关系)。如果用户订阅了一个子主题,他只会接收来自该主题的消息(他在“A->B”中订阅了“B”,并且只在“B”中接收消息)。如果用户订阅了主主题,他会收到来自子主题的所有消息(他订阅了“A”并接收“B”和“A”的其他子主题的消息)。

用户应该使用推送通知(Android/Apple)在他们的手机上接收通知。

我试图做的

我试图通过将消息发布到层次结构的所有通道来模拟层次结构。假设我们有这样的层次结构:“A->B->C”“A->B->D”,所以 B 有两个子主题。

发布到 C 意味着,对于发布者来说,将消息发送到通道“A”、“B”和“C”。发布到 D 对发布者来说意味着向通道“A”、“B”和“D”发送消息。

问题

使用 Redis 支持的 Faye 或仅使用 Redis 有没有更好的方法来做到这一点?如果这是最好的方法,它如何随着发布者/订阅者和主题数量的增加而扩展?如何通过移动推送API实现流更新?

4

1 回答 1

5

您应该考虑 redis 中的 PSUBSCRIBE 命令。

使用 PSUBSCRIBE 客户端订阅模式而不是单个键。

您可以轻松地在键命名中对层次结构进行编码(假设您有主题:A:B:C),当客户端订阅主题:A:*时,它将接收发布在主题:A:B和主题:A:B上的消息:C

于 2013-04-21T11:37:05.123 回答