【发布时间】:2014-06-12 06:00:08
【问题描述】:
我能否使用 glob 样式模式在同一命令中将消息发布到多个通道,例如 Connection.GetSubscriber().Publish("room/*", "my message"),并且消息会发布到与该模式匹配的所有通道?
如果我误解了 Redis 中的基本发布/订阅模式,上述问题可能毫无意义。我的理解是,每个Subscribe 命令都会在 Redis 服务器上建立一个通道,因此服务器知道通道 ID,因此当服务器收到发布命令时,它应该能够将发布的消息“扇出”给所有人匹配 glob 样式模式的通道。如有错误请指正。
另外一个问题,我假设我也可以使用 glob 样式模式订阅多个频道,对吗?
谢谢
【问题讨论】:
-
不支持多个发布。但是我们可以通过 lua 脚本创建自定义发布 cmd 并使用 EVAL cmd 运行。我对此进行了测试,但值得一试。还要注意 cmd 本质上是原子的,确保通过脚本发布到所有频道。
标签: redis publish subscribe stackexchange.redis