php+redis实现消息队列功能示例


Posted in PHP onSeptember 19, 2019

本文实例讲述了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程序设计有所帮助。

PHP 相关文章推荐
简单的用PHP编写的导航条程序
Oct 09 PHP
表单复选框向PHP传输数据的代码
Nov 13 PHP
PHP实现Soap通讯的方法
Nov 03 PHP
php ImageMagick windows下安装教程
Jan 26 PHP
php为字符串前后添加指定数量字符的方法
May 04 PHP
php用户密码加密算法分析【Discuz加密算法】
Oct 12 PHP
PHP封装函数实现生成随机的字符串验证码
Jan 24 PHP
php批量删除操作(数据访问)
May 23 PHP
PHP实现的简单路由和类自动加载功能
Mar 13 PHP
php微信公众号开发之秒杀
Oct 20 PHP
Centos7 Yum安装PHP7.2流程教程详解
Jul 02 PHP
php封装实现钉钉机器人报警接口的示例代码
Aug 08 PHP
php文件包含的几种方式总结
Sep 19 #PHP
smarty模板的使用方法实例分析
Sep 18 #PHP
PHP MVC框架中类的自动加载机制实例分析
Sep 18 #PHP
PHP切割整数工具类似微信红包金额分配的思路详解
Sep 18 #PHP
php实现多站点共用session实现单点登录的方法详解
Sep 18 #PHP
PHP实现批量修改文件名的方法示例
Sep 18 #PHP
php DES加密算法实例分析
Sep 18 #PHP
You might like
php结合飞信 免费天气预报短信
2009/05/07 PHP
PHP中的随机性 你觉得自己幸运吗?
2016/01/22 PHP
PHP数据库操作三:redis用法分析
2017/08/16 PHP
jQuery 学习第五课 Ajax 使用说明
2010/05/17 Javascript
javascript 全等号运算符使用说明
2010/05/31 Javascript
jQuery中的编程范式详解
2014/12/15 Javascript
jQuery实现的在线答题功能
2015/04/12 Javascript
浅谈javascript语法和定时函数
2015/05/03 Javascript
jQuery构造函数init参数分析
2015/05/13 Javascript
jQuery判断指定id的对象是否存在的方法
2015/05/22 Javascript
jqGrid中文文档之选项设置
2015/12/02 Javascript
深入理解JavaScript程序中内存泄漏
2016/03/17 Javascript
Angular JS数据的双向绑定详解及实例
2016/12/31 Javascript
原生js实现新闻列表展开/收起全文功能
2017/01/20 Javascript
javascript自定义事件功能与用法实例分析
2017/11/08 Javascript
解决一个微信号同时支持多个环境网页授权问题
2019/08/07 Javascript
VueCli4项目配置反向代理proxy的方法步骤
2020/05/17 Javascript
用Python实现QQ游戏大家来找茬辅助工具
2014/09/14 Python
Python中强大的命令行库click入门教程
2016/12/26 Python
Python实现图片识别加翻译功能
2019/12/26 Python
Python web框架(django,flask)实现mysql数据库读写分离的示例
2020/11/18 Python
a标签下载链接的简单实现
2016/09/13 HTML / CSS
KIKO美国官网:意大利的平价彩妆品牌
2017/05/16 全球购物
雅高酒店中国:Accorhotels.com China
2018/03/26 全球购物
国外的一些J2EE面试题一
2012/10/13 面试题
2014自荐信的写作技巧
2014/01/28 职场文书
西式结婚主持词
2014/03/14 职场文书
网络文明传播志愿者活动方案
2014/08/20 职场文书
中学生关于梦想的演讲稿
2014/08/22 职场文书
竞聘演讲稿怎么写
2014/08/28 职场文书
工作失职检讨书500字
2014/10/17 职场文书
Nginx反向代理多个服务器的实现方法
2021/03/31 Servers
MySQL中存储时间的最佳实践指南
2021/07/01 MySQL
nginx服务器的下载安装与使用详解
2021/08/02 Servers
梳理总结Python开发中需要摒弃的18个坏习惯
2022/01/22 Python
一篇文章带你掌握SQLite3基本用法
2022/06/14 数据库