PHP+Redis实现消息队列 代码实例

在项目中使用消息队列一般是有如下几个原因:

  • 把瞬间服务器的请求处理换成异步处理,缓解服务器的压力
  • 实现数据顺序排列获取

 

redis实现消息队列步骤如下:

1、redis函数rpush,lpop

2、建议定时任务入队列

3、创建定时任务出队列

 

一、文件:demo.php插入数据到Redis队列

<?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);
 
}

?>

 

二、文件:index.php定时扫描出队列

<?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

 

tail -f /var/log/cron 查看定时任务执行情况:

Nov 7 00:30:01 dongzi CROND[6888]: (root) CMD (php /wwwroot/workplace/redis/demo.php)

Nov 7 00:30:01 dongzi CROND[6890]: (root) CMD (php /wwwroot/workplace/redis/index.php )

 

定时任务执行队列写入结果如下:

127.0.0.1:6379> lrange mylist 0 -1

1) "h"

2) "e"

3) "l"

4) "l"

5) "o"

6) "w"

7) "o"

8) "r"

9) "l"

10) "d"

 

定时任务执行出队列后结果如下:

127.0.0.1:6379> lrange mylist 0 -1

1) "e"

2) "l"

3) "l"

4) "o"

5) "w"

6) "o"

7) "r"

8) "l"

9) "d"

 

php+redis

    A+
发布日期:2017年09月15日 23:39:09  所属分类:PHP
最后更新时间:2019-03-11 21:02:09
评分: (3 票;平均数5.00 ;最高评分 5 ;用户总数3;总得分 15;百分比100.00)
头像
花牛苹果 甘肃天水 李宏恩家自种 1斤 包邮
花牛苹果 甘肃天水 李宏恩家自种 1斤 包邮
  • ¥ 6.8元
  • 市场价:8.8元
wordpress站群服务 泛解析二级域名 二级目录站群
wordpress站群服务 泛解析二级域名 二级目录站群
  • ¥ 1999.9元
  • 市场价:4800元
免费SSL证书服务 HTTPS申请 安装 配置 支持通配符*
免费SSL证书服务 HTTPS申请 安装 配置 支持通配符*
  • ¥ 199.9元
  • 市场价:20000元
服务器管理面板/主机控制面板“安装”服务
服务器管理面板/主机控制面板“安装”服务
  • ¥ 9.9元
  • 市场价:49.9元

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

 

目前评论:2   其中:访客  1   博主  1

  1. 头像 丁合超博客 0

    不错,对php + redis 更一步了解

    • 付杰 付杰

      @丁合超博客 欢迎常来,同行大家可以相互交流,相互学习一下!