参考:http://www.cnblogs.com/lisqiong/p/6039460.htmlphp
参考:http://blog.csdn.net/shaobingj126/article/details/50585035html
消息队列:是在消息的传输过程当中保存消息的容器。消息队列管理器在将消息从它的源中继到它的目标时充当中间人。队列的主要目的是提供路由并保证消息的传递;若是发送消息时接收者不可用,消息队列会保留消息,直到能够成功地传递它git
应用场景:异步处理,应用解耦,流量削锋和消息通信四个场景github
一、异步处理ajax
场景说明:用户注册后,须要发注册邮件和注册短信。redis
注解:自行考虑ajax中的异步。数据库
二、应用解耦异步
通常订单系统和库存系统是一体的,可是若是一方出现问题,那么这个订单就失败了。函数
注解:感受特别像行为驱动,消息队列中存储的就是每一个行为spa
三、流量消锋(通常在秒杀或团抢活动中使用普遍)
注解:通常秒杀时订单会特别的多,可是数据库没法一次性的处理这么多,因此能够先存在消息队列中,不管我进的速度多快,出的速度都是必定的。不知道算不算属于漏斗模型的一部分
php的redis扩展:https://github.com/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