php 队列管理器,php+redis实现消息队列

原标题:php+redis实现消息队列

消息队列:是在消息的传输过程中保存消息的容器。消息队列管理器在将消息从它的源中继到它的目标时充当中间人。队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用,消息队列会保留消息,直到可以成功地传递它

应用场景:异步处理,应用解耦,流量削锋和消息通讯四个场景

1、异步处理

场景说明:用户注册后,需要发注册邮件和注册短信。

b40eefe1580e9cb0128e58d454d824e1.png

注解:自行考虑ajax中的异步。

2、应用解耦

一般订单系统和库存系统是一体的,但是如果一方出现问题,那么这个订单就失败了。

c551eef5996102d2bc88f0ec808a0300.png

订单系统:用户下单后,订单系统完成持久化处理,将消息写入消息队列,返回用户订单下单成功。

库存系统:订阅下单的消息,采用拉/推的方式,获取下单信息,库存系统根据下单信息,进行库存操作。

假如:在下单时库存系统不能正常使用。也不影响正常下单,因为下单后,订单系统写入消息队列就不再关心其他的后续操作了。实现订单系统与库存系统的应用解耦。

注解:感觉特别像行为驱动,消息队列中存储的就是每个行为

3、流量消锋(一般在秒杀或团抢活动中使用广泛)

34fac39108ee20f21c3e3cddd698df22.png

注解:一般秒杀时订单会特别的多,但是数据库无法一次性的处理这么多,所以可以先存在消息队列中,无论我进的速度多快,出的速度都是一定的。不知道算不算属于漏斗模型的一部分

php的redis扩展:https://github.com/phpredis/phpredis

1)redis函数rpush,lpop

2).Linux的crontab

创建demo.php和index.php

php$redis= newRedis();$redis->connect('127.0.0.1',6379 );$password= '123456' ;$redis->auth( $password);$arr= array('h','e','l','l','o','w','o','r','l','d' );foreach( $arras$k=> $v){$redis->rpush("mylist", $v); } php$redis= newRedis();$redis->connect('127.0.0.1',6379 );$password= '123456' ;$redis->auth( $password);//list类型出队操作$value= $redis->lpop('mylist' );if( $value){echo"出队的值". $value; }else{echo"出队完成" ; }?>

建立定时任务

*/1 * * * * root php /wwwroot/workplace/redis/index.php

*/3 * * * * root php /wwwroot/workplace/redis/demo.php返回搜狐,查看更多

责任编辑:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值