PHP中怎么利用Redis 实现消息队列
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇文章给大家分享的是有关PHP中怎么利用Redis 实现消息队列,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Redis做消息队列的好
千家信息网最后更新 2026年11月03日PHP中怎么利用Redis 实现消息队列
本篇文章给大家分享的是有关PHP中怎么利用Redis 实现消息队列,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
Redis做消息队列的好处在于它的轻量级,高并发,延迟敏感,应用场景有 即时数据分析、秒杀计数器、缓存等
Redis做消息队列待解决的问题:
1、消息的可靠性: 没有相应的机制保证消息的消费,当消费者消费失败的时候,消息体丢失,需要手动处理。生产者只管向队列中插入数据,不管消费者是否成功消费。
2、消费者挂掉消息不会丢失,但是需要重新触发一下消费者,才能够继续消费消息。
代码如下:
lib.php 是工具文件,里面有数据库的连接、Redis的连接:
connect($host, $port)){ die("Redis连接失败:IP或端口有误"); } if(!empty($password) && !$redis->auth($password)){ die("Redis连接失败:密码错误"); } if($database){ $redis->select($database); } // work中 subscribe 如果一段时间没有接到消息,就会停掉然后停掉,所以加这个语句让其永不超时 $redis->setOption(Redis::OPT_READ_TIMEOUT, -1); return $redis;} /** * 打印消息日志 * * @param $msg */function stdout($msg=null){ $msg = '['.date('Y-m-d H:i:s').']'.$msg.chr(10);; fwrite(STDOUT, $msg);}register.php 是消息发布者,注释的是将消息存入数据库部分的代码。
首先想消息存入 register_users 队列中,存入的 key是register_users;value是一个list,消息全部存入其中。用 redis-cli 查看数据的命令是:
LRANGE register_users 0 -1
register.php:
error);// }$redis = getRedis();// 添加消息$result = $redis->lpush('register_users', json_encode(array('name'=>$name, 'mobile'=>$mobile), JSON_UNESCAPED_UNICODE));if($result === false){ mysqli_rollback($connection); die("添加消息队列失败");}// 发布消息$redis->publish('register_success', 'ok');// 所有操作完成后提交事务// mysqli_commit($connection);// $connection->close();$redis->close();work.php 做为消息的消费者
subscribe(['register_success'], function ($instance, $channelName, $message) { if($channelName == "register_success" && $message = "ok") { $redis = getRedis(); while($redis->lsize("register_users")>0) { $arr = $redis->brPop(['register_users'], 20); if(count($arr)) { $userInfo = json_decode($arr[1], true); stdout("新注册用户信息:"); stdout("姓名:".$userInfo['name']); stdout("手机号:".$userInfo['mobile']); stdout(); sleep(3); } } }});register.php将消息放入redis 的 register_users队列中,然后再使用 publish 将 register_success 消息发不出去。work.php 使用 subscribe 订阅register_success 的消息。接收到 register_success 消息之后,读取 register_users 的消息进行处理。
以上就是PHP中怎么利用Redis 实现消息队列,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。
消息
消费
队列
数据
消费者
代码
数据库
更多
知识
篇文章
部分
处理
实用
事务
发布者
可靠性
命令
场景
好处
姓名
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
科技互联网
广州为想互联网科技有限公司
互联网科技行业发展
西安互联网科技
互联网与未来科技
奇士达互联网科技
长亮科技互联网金融
佩信高科技互联网
互联网汽车科技小镇
中盈科技互联网信息有限公司
互联网科技博主是什么意思
厦门千工互联网科技有限公司
移动互联网科技公司
群盈汇互联网科技有限公司
互联网科技年终奖
工业互联网科技成果转化
济南小医互联网科技有限公司招聘
福仕德教育科技互联网
平安好医生打造互联网科技医疗
前海云享互联网科技
广州百单互联网科技有限公司
互联网的科技
致聘互联网科技
广州紫鲸互联网科技
互联网科技公司的市场部门
互联网科技有哪些公司
苏州五指互联网络科技有限
明优互联网科技有限公司
宁波跨境商互联网科技有限公司
互联网科技企业文化