Redis:PUBLISH 是异步的吗?

Redis: Is PUBLISH asynchronous?

如果我 PUBLISH Redis 上的一条消息有一个订阅者,但该订阅者需要 1 秒来接收消息,将阻塞 PUBLISH 一秒,还是他们独立行动?

如果他们独立行动,有多少 PUBLISH 命令会在坏事开始发生之前排队?

PUBLISH 是同步的 - 您还可以在 pubsub.c 函数 publishCommandpubsubPublishMessage 中找到此命令的来源。 Redis 是单线程应用程序。因此,严格来说,他的所有命令都是同步的。

不要认为答案或评论很清楚。 从使用 redis 客户端的外部呼叫者的角度来看,如果我有一个背靠背订阅频道的 thread/process 运行,然后立即写入同一频道并测试它是否收到消息 echo' d 回到它。是否有可能出现竞争条件 b/c 订阅在客户端响应并开始写入第一条消息时尚未完全注册或完成... ??

也许核心redis服务器同时支持两者,这取决于所使用的客户端,但不确定....