如何知道SUBSCRIBER是否正在运行或不是在php redis pubsub中的PUBLISHING事件?

时间:2014-10-02 07:41:13

标签: php redis phpredis

我正在使用php redis pubsub我注意到如果订阅者没有运行,如果我们将事件发布到频道,那么该事件将被删除。

因此,在将某些内容发布到频道之前,我想检查用户是否正在运行?

任何方式来识别状态或任何不同的方式,以便我的发布的事件不应该退出。 提前致谢

1 个答案:

答案 0 :(得分:3)

您无法判断您的订阅者是否正在收听,这是设计原因:

请参阅http://redis.io/topics/pubsub

  

[...]发件人(发布者)未编程发送邮件   特定接收者(订户)。相反,已发布的消息是   特征为渠道,不知道什么(如果有的话)   订阅者可能

这不是Redis特有的,而是任何Pub / Sub实现背后的基本原则。

您可能会询问如何可靠地向您发送消息,但Redis还没有内置的功能:

http://redis.io/topics/notifications

  

因为Redis Pub / Sub 火,忘了目前没有办法   如果您的应用需要可靠的通知,请使用此功能   事件,即,如果您的发布/订阅客户端断开连接并重新连接   之后,在客户端期间交付的所有事件   断开连接会丢失。

您可能希望在现有功能之上实现自己的机制。例如,您可以将LPUSH个新消息发送到PUB端的列表,并RPOP在客户端使用它们,并使用keyspace notifications知道何时执行此操作。使用这种方法,即使没有客户端正在收听,您也不会丢失任何消息。