当前位置: 首页 > 面试题库 >

使用nodejs和redis发布订阅(node_redis)

海雪松
2023-03-14
问题内容

我正在尝试使用nodejs和node_redis构建一个通用的发布/订阅服务器,该服务器接收带有通道名称的浏览器的请求,并以该通道也已发布的任何数据作为响应。为此,我使用了来自浏览器的长轮询请求,并通过在通道上收到消息时发送响应来处理这些请求。

对于每个新请求,都会创建一个对象来订阅该频道(如果且仅当该频道不存在时)。

clients = {};

//when request comes in,
clients[channel] = redis.createClient();
clients[channel].subscribe(channel);

这是处理订阅渠道的最佳方法,还是还有其他更直观的方法?


问题答案:

对我来说,这似乎是一个非常合理的解决方案。您对此不满意吗?

请记住,每个Redis连接上可以有多个订阅。这可能最终会使您的逻辑复杂化,这与您要的相反。但是,这可能是必要的。每个Redis连接都相对便宜,但确实需要一个文件描述符和一些内存



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

  • 问题内容: 当前,我正在使用node.js和redis来构建应用程序,使用redis的原因是由于发布/订阅功能。该应用程序只是在用户进入用户或不在房间时通知管理员。 由于我想听join和disjoin事件,我的问题是我是否应该使用两个redisclient来听这两个事件,例如 或者只是使用一个redisclient来监听和分离回调中的逻辑 我知道这两种方式都是可行的,但是我不知道人们在哪种情况下会

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

  • 我有一个问题非常困扰我。Redis发布/订阅功能的实际用途是什么?我只能想到通过TCP(本地或分布式)进行进程间通信,但其他的就不多了。 有人能证明我错了吗。

  • 我使用Java创建Redis Pub/Sub,其中包含单个主题和单个侦听器,如thank: 这是我在MVCConfiguer中的bean: 这就是我接收消息的地方,请不要使用这个RedisMsghandler类来MvcConfigrer 我的主要目标是创建多个主题和多个听众,如RedisMsgHandler,请告诉我如何做。 我不喜欢创建大量在MessageListener上实现的类,也不喜欢为每

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