我想经常将消息从python组件发布到redis服务器。然后,在另一个也可以访问redis服务器的php组件中,我想根据redis中存储的消息向用户发送电子邮件。如果我没有错的话,有两种方法:推拉和推-推设计:
拉力设计
php组件经常向redis服务器发出请求,当出现新消息时,执行该操作。
推送设计:
我们不需要频繁地从php组件发出这些请求:每当redis中发布新消息时,就可以触发php组件的操作。
我的问题
我们如何实现推-推设计?当我阅读关于pub子模型的redis文档时,我没有找到任何关于它的信息。所以我真的不明白我们如何触发一个动作,以另一种方式,然后频繁地向redis服务器发出请求。
1条答案
按热度按时间fgw7neuy1#
您需要使用诸如
nohup
,supervisor
或者upstart
. 这个进程将继续作为守护进程使用您的redischannel
. python将继续生产,php将继续消费。有几个库可以作为守护进程运行php进程,比如reactphp,或者如果您使用的是laravel之类的框架,那么它提供了一个很好的pub/sub接口。
它将是这样的东西;
php部分将
subscribe
至mychannel
```127.0.0.1:6379> SUBSCRIBE mychannel
Reading messages... (press Ctrl-C to quit)
同时,您的php进程将收到这些消息
在那里面
subscriber
php进程每当收到消息时,您将调用/触发/分派您的电子邮件传递作业(可能是异步的)。