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

Redis PubSub订阅机制如何工作?

仰雅昶
2023-03-14
问题内容

我想创建一个发布-订阅基础结构,其中每个订阅者都将收听多个(例如100k)频道。

我认为可以将Redis
PubSub用于此目的,但是我不确定在这里订阅数千个频道是否是最佳实践。为了回答这个问题,我想知道Redis中的订阅机制在后台如何工作。

另一种选择是为每个订户创建一个频道,并在两者之间放置一些组件,该组件将获取所有消息并将其发布到相关的频道。

还有其他想法吗?


问题答案:

Salvatore /
Redis的创建者已在此处回答:https :
//groups.google.com/forum/#!topic /redis-
db/R09u__3Jzfk

All the complexity on the end is on the PUBLISH command, that performs
an amount of work that is proportional to:

a) The number of clients receiving the message.
b) The number of clients subscribed to a pattern, even if they'll not
match the message.

This means that if you have N clients subscribed to 100000 different
channels, everything will be super fast.

If you have instead 10000 clients subscribed to the same channel,
PUBLISH commands against this channel will be slow, and take maybe a
few milliseconds (not sure about the actual time taken). Since we have
to send the same message to everybody.


 类似资料:
  • 订阅号的订阅者支持按照组织机构或单人进行添加,同时可以设置使用范围和订阅权限。 设置订阅组织机构:勾选组织机构节点后,所有自组织机构及成员都将订阅此订阅号 新增/删除订阅者:点击新增订阅者/删除订阅者-选择相应人员

  • 在REST控制器中,我需要调用REST以获取一个值,用作第二次REST调用的URI变量。 问题是在WebFlux REST中不可能调用mono/flux上的块。 代码抛出 Java . lang . illegalstateexception block()/block first()/block last()正在阻塞,这在线程反应器中是不支持的-http 我试图改变 . build(result

  • mysql会员订阅数据表的设计应该如何设计?产品有订阅商品和非订阅的,每次都只能购买一个。 订阅有1个月 3个月的 每次到期自动扣费。如果在一个月类购买了几个订阅商品 则扣费按照最新的一个 然后延长到期时间。其实是不是每次订阅都不需要生成新订单的 翻阅了其他资料都找不到很好的设计

  • 问题内容: 描述为: “共享秘密”的存储库,这是一种在不使用反射的情况下在另一个程序包中调用实现私有方法的机制。package- private类实现了一个公共接口,并提供了在该包内调用package- private方法的能力。实现该接口的对象是通过限制访问的第三包提供的。该框架避免了为此目的使用反射的主要缺点,即损失了编译时检查。 有人可以提供一个示例来说明此机制如何使一个包中的类访问另一个包

  • 我正在尝试创建以下链: 因此,我需要得到5。但是在执行1,2和3之前,4。 代码运行正常,但我想退出 从

  •  说明 调用方法: $.f2eAct.yyue(el,options); 函数说明: Y阅功能,包含查询用户是否订阅,用户订阅,用户取消订阅 参数说明: 参数名 类型 说明 备注 el string DOM元素对象 必要 pcode int 订阅媒体的id 必要 gcode int 媒体用户分组id 必要 success function 查询是否订阅回调方法 无 confirm functio