我正在将 redis++ 用于具有 redis 后端的应用程序。我们依靠 pubsub 来实现不同进程之间的一些通信。
目前,我们使用socket_timeout和循环来消费消息。然而,这有一些缺点。
查看源代码后,通过 Connection 类公开hiredis 文件描述符似乎并不难。 在理想的情况下,我想对该 fd 和其他一些文件运行 select/poll 调用,但如果我可以查询订阅者是否工作准备就绪,我可能已经很高兴了。
在开始工作之前,我想知道这是否是一个已知问题,或者我是否以错误的方式看待这个问题。
如果有其他工作进来
您的意思是您需要拨打
subscribe
或 psubscribe
电话吗?
如果您使用同步版本的
Redis::Subscriber
,是的,您必须等到套接字超时,或者您可以让另一个进程/线程向通道发布消息以唤醒阻塞的客户。
另一个解决方案是使用AsyncSubscriber。使用此类,您可以订阅或 psubscribe 频道,而无需等到套接字超时。