php使用redis实现消息队列实例
2023-02-18 16:32:26 时间
PHP学习网将不定时分享优质开源项目,优质技术文章,精选面试题和资源,大家可以把PHP学习网设为?星标,第一时间获取最新推送,以防错过优质内容。
项目中使用消息队列的地方很多,一般小型项目我们想用用队列,就不需要搭建专门的队列服务器了,我们直接使用redis即可,基本能实现我们的需求。
项目中使用消息队列的地方
1、缓解服务器压力,将请求换成异步。
2、日志收集
3、文章列表(不同地方的文章,排序分页使用,这个就不需要消费了)
4、秒杀
等等,都可以使用消息队列
消息队列实现的步骤
1)redis函数rpush,lpop
2)建议定时任务入队列
3)创建定时任务出队列
入队列 demo.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);
}
定时出队列 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 * * * * php /wwwroot/redis/index.php
*/3 * * * * php /wwwroot/redis/demo.php
tail -f /var/log/cron 查看定时任务执行情况
查看队列的结果
可以使用命令查看队列里数据的情况
lrange mylist 0 -1
通过这个命令我们可以做一个可视化的,展示前三百队列的情况,做到实时观察队列数据,如下图所示。
相关文章
- .NET Core如何通过认证机制访问Kafka?
- .net 温故知新:【10】.NET ORM框架EFCore使用入门之CodeFirs、DBFirst
- 一次 Redis 事务使用不当引发的生产事故
- 安卓项目五子棋代码详解(三)
- 安卓项目五子棋代码详解(二)
- 安卓项目五子棋代码详解(一)
- 【深入浅出Seata原理及实战】「入门基础专题」探索Seata服务的AT模式下的分布式开发实战指南(2)
- Nexus私有maven库部署和使用
- 【深入浅出Seata原理及实战】「入门基础专题」带你透析认识Seata分布式事务服务的原理和流程(1)
- 【SpringBoot实战专题】「开发实战系列」从零开始教你舒服的使用RedisTemplate操作Redis数据
- Kotlin学习快速入门(12)—— 位运算符
- Spring Boot命令指定环境启动jar包
- 【Redis 技术探索】「数据迁移实战」手把手教你如何实现在线 + 离线模式进行迁移 Redis 数据实战指南(scan模式迁移)
- 【Redis 技术探索】「数据迁移实战」手把手教你如何实现在线 + 离线模式进行迁移Redis数据实战指南(离线同步数据)
- Window系统的mysql数据库定时备份
- 【SpringBoot实战专题】「开发实战系列」从零开始教你舒服的使用RedisTemplate操作Redis数据
- 【开源库推荐】#4 Poi-办公文档处理库
- 【Redis技术探索】「数据迁移实战」手把手教你如何实现在线+离线模式进行迁移Redis数据实战指南(在线同步数据)
- Kotlin学习快速入门(11)—— 枚举类的使用
- 【深入浅出Sentinel原理及实战】「基础实战专题」零基础实现服务流量控制实战开发指南(2)