当前位置 : IT培训网 > PHP开发 > PHP培训 > 浅谈php+redis如何实现消息队列

浅谈php+redis如何实现消息队列

时间:2017-10-12 15:14:17  来源:php培训网  作者:IT培训网  已有:名学员访问该课程
标签(Tag):   php+redis实现消(1)
Php+redis是如何实现消息队列的?首先我们要认识什么是消息队列?消息队列指的是在消息的传输过程中保存消息的容器。消息队列管理器有什么作用?可以将消息从它的源中继到它的目标时充当中间人。队列的主要目的是提供路由

Php+redis是如何实现消息队列的?首先我们要认识什么是消息队列?消息队列指的是在消息的传输过程中保存消息的容器。消息队列管理器有什么作用?可以将消息从它的源中继到它的目标时充当中间人。队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用,消息队列会保留消息,直到可以成功地传递它。

浅谈php+redis如何实现消息队列_www.itpxw.cn

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

1、异步处理

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

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

2、应用解耦

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

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

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

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

3、流量消锋

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

php的redis扩展:https://itpxw.cn/phpredis/phpredis

1)redis函数rpush,lpop

2).Linux的crontab

创建demo.php和index.php

<?php$redis = new Redis();

$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($arr as $k=>$v){

  $redis->rpush("mylist",$v);

}

<?php

$redis = new Redis();

$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

以上便是Php+redis实现消息队列的解析,让我们认识到整个过程是如何真正的实现的,对我们的开发将有很大的帮助,每一个信息的积累都将是一个跃进。

顶一下
(0)
0%
踩一下
(0)
0%

IT培训0元试听 每期开班座位有限.0元试听抢座开始! IT培训0元试听

  • 姓名 : *
  • 电话 : *
  • QQ : *
  • 留言 :
  • 验证码 : 看不清?点击更换请输入正确的验证码

在线咨询在线咨询

温馨提示 : 请保持手机畅通,咨询老师为您
提供专属一对一报名服务。

------分隔线----------------------------
------分隔线----------------------------

推荐内容

相关热点