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 危险函数解释 分析
Apr 22 PHP
ThinkPHP php 框架学习笔记
Oct 30 PHP
IIS7.X配置PHP运行环境小结
Jun 09 PHP
PHP中的正则表达式函数介绍
Feb 27 PHP
php 启动报错如何解决
Jan 17 PHP
discuz图片顺序混乱解决方案
Jul 29 PHP
PHP处理会话函数大总结
Aug 05 PHP
ThinkPHP路由机制简介
Mar 23 PHP
PHP双向链表定义与用法示例
Jan 31 PHP
PHP中创建和编辑Excel表格的方法
Sep 13 PHP
实现PHP中session存储及删除变量
Oct 15 PHP
php+mysql+ajax 局部刷新点赞/取消点赞功能(每个账号只点赞一次)
Jul 24 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 观察者模式的实现代码
2013/05/10 PHP
php使用sql数据库 获取字段问题介绍
2013/08/12 PHP
php+resumablejs实现的分块上传 断点续传功能示例
2017/04/18 PHP
Ajax中的JSON格式与php传输过程全面解析
2017/11/14 PHP
Laravel5.1 框架控制器基础用法实例分析
2020/01/04 PHP
解决PhpStorm64不能启动的问题
2020/06/20 PHP
JavaScript入门教程 Cookies
2009/01/31 Javascript
jquery select动态加载选择(兼容各种浏览器)
2013/02/01 Javascript
JavaScript如何动态创建table表格
2020/08/02 Javascript
用NODE.JS中的流编写工具是要注意的事项
2016/03/01 Javascript
Node.js利用Net模块实现多人命令行聊天室的方法
2016/12/23 Javascript
JS正则匹配URL网址的方法(可匹配www,http开头的一切网址)
2017/01/06 Javascript
JavaScript中click和onclick本质区别与用法分析
2018/06/07 Javascript
快速解决select2在bootstrap模态框中下拉框隐藏的问题
2018/08/10 Javascript
JS实现获取数组中最大值或最小值功能示例
2019/03/02 Javascript
记一次用vue做的活动页的方法步骤
2019/04/11 Javascript
Vue修改项目启动端口号方法
2019/11/07 Javascript
JavaScript如何处理移动端拍摄图片旋转问题
2019/11/16 Javascript
用vite搭建vue3应用的实现方法
2021/02/22 Vue.js
[01:02]DOTA2上海特锦赛SHOWOPEN
2016/03/25 DOTA
Python类的继承和多态代码详解
2017/12/27 Python
基于Django用户认证系统详解
2018/02/21 Python
python 除法保留两位小数点的方法
2018/07/16 Python
Python实现网站表单提交和模板
2019/01/15 Python
浅析python的Lambda表达式
2019/02/27 Python
搞定这套Python爬虫面试题(面试会so easy)
2019/04/03 Python
python 字段拆分详解
2019/12/17 Python
pymysql 插入数据 转义处理方式
2020/03/02 Python
CSS3属性box-sizing使用指南
2014/12/09 HTML / CSS
css3实现二维码扫描特效的示例
2020/10/29 HTML / CSS
香港化妆品经销商:我的公主
2016/08/05 全球购物
美国排名第一的泳池用品直接来源:In The Swim
2019/09/23 全球购物
开放系统互连参考模型
2016/06/29 面试题
资源环境与城乡规划管理专业自荐书
2014/09/26 职场文书
python tkinter实现定时关机
2021/04/21 Python
MySQL七大JOIN的具体使用
2022/02/28 MySQL