当前位置: 首页 > 知识库问答 >
问题:

Redis和Faye中的分层发布/订阅和推送通知

葛飞扬
2023-03-14

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

我的目标

每个用户都可以向频道/主题发布消息,并从他订阅的主题接收消息。主题必须具有层次结构(即主题“B”是主题“a”的子主题,因此我们有一个“a”)-

用户应该使用推送通知(Android/苹果)在手机上接收通知。

我想做的

我试图通过向层次结构的所有通道发布消息来模拟层次结构。假设我们有这样的等级制度:“A-

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

问题

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

共有1个答案

白萧迟
2023-03-14

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

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

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

 类似资料:
  • 主要内容:发布/订阅流程,常用命令汇总,基本命令应用Redis PubSub 模块又称发布订阅者模式,是一种消息传递系统,实现了消息多播功能。发布者(即发送方)发送消息,订阅者(即接收方)接收消息,而用来传递消息的链路则被称为  channel。在 Redis 中,一个客户端可以订阅任意数量的 channel(可译为频道)。 消息多播:生产者生产一次消息,中间件负责将消息复制到多个消息队列中,每个消息队列由相应的消费组进行消费,这是分布式系统常用的

  • 发布和订阅 Meteor 服务端可以通过Meteor.publish发布文档集,同时客户端可以通过Meteor.subscribe订阅这些发布。 任何客户端订阅的文档都可以通过find方法进行查询使用。 默认情况下,每个新创建的 Meteor 应用包含有 autopublish 包,它会自动为每个客户端发布所有可用的文档。 为了可以更细化的控制不同客户端所接收的数据文档,首先应该在终端移除 aut

  • 问题内容: 我正在尝试使用nodejs和node_redis构建一个通用的发布/订阅服务器,该服务器接收带有通道名称的浏览器的请求,并以该通道也已发布的任何数据作为响应。为此,我使用了来自浏览器的长轮询请求,并通过在通道上收到消息时发送响应来处理这些请求。 对于每个新请求,都会创建一个对象来订阅该频道(如果且仅当该频道不存在时)。 这是处理订阅渠道的最佳方法,还是还有其他更直观的方法? 问题答案:

  • 目前,我正在开发一个分布式测试执行和报告系统。我计划将Redis PUB/SUB用作消息队列和消息分发系统。 我是Redis的新手,所以我试着阅读尽可能多的文档,并尝试着使用它。最重要的主题之一是高可用性。正如我所说,我不是专家,但我知道可能的选择——使用Sentinel、复制、集群等。 我不清楚的是Pub/Sub功能和HA选项是如何相互关联的。使用Redis构建可靠消息传递系统的最佳实践是什么?

  • Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。 Redis 客户端可以订阅任意数量的频道。 下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 —— client2、client5 和 client1 之间的关系: 当有新消息通过 PUBLISH 命令发送给频道 channel1 时, 这个消息就会被发送给订阅它的三个

  • 问题内容: Pypubsub为您的Python应用程序提供了一种解耦其组件的简单方法:应用程序的某些部分可以发布消息(带有或不带有数据),其他部分可以订阅/接收它们。这允许消息“发件人”和消息“侦听器”彼此不知道: 一个不需要导入另一个 发件人不需要知道 “谁”得到消息, 监听者将如何处理数据, 甚至任何侦听器都将获取消息数据。 同样,听众也不必担心消息的来源。 这是用于实现模型-视图-控制器体系