京东6.18大促主会场领京享红包更优惠

 找回密码
 立即注册

QQ登录

只需一步,快速开始

使用PHP和Redis实现消息队列功能

2024-11-4 07:44| 发布者: ae2942d9| 查看: 154| 评论: 0

摘要: 目录前言一、安装Redis二、安装PHP的Redis扩展三、测试验证总结前言 今天,我们继续讲消息队列,如何使用Redis实现消息队列的功能。 前期准备,需要安装好docker、docker-compose的运行情况。 PHP的项目运行情况可以
目录

前言

今天,我们继续讲消息队列,如何使用Redis实现消息队列的功能。

前期准备,需要安装好docker、docker-compose的运行情况。

PHP的项目运行情况可以参考下面的文章内容。

如何使用docker摆设php服务

前面我们也讲了PHP和RabbitMQ实现消息队列的功能,感兴趣的可以查看下面的文章。

如何使用PHP和RabbitMQ实现消息队列?

一、安装Redis

1、安装Redis的步调可以参考下面的文章内容。

Redis不同的长期化方式有什么差异?我们来做个小试验。

二、安装PHP的Redis扩展

1、打开浏览器,找到扩展下载地址,PECL :: Package :: redis

2、进入test1项目容器,实行如下命令。

[code]docker exec -ti test1 sh[/code]

3、下载扩展,编译安装,实行如下命令。

[code]wget https://pecl.php.net/get/redis-6.0.2.tgz tar -xzvf redis-6.0.2.tgz cd redis-6.0.2/ phpize ./configure --with-php-config=/usr/local/php/bin/php-config make && make install[/code]

4、增长redis扩展修改php.ini设置,增长如下内容。

[code]extension=redis.so[/code]

5、查抄扩展是否设置乐成,实行如下命令。

[code]php -m|grep redis[/code]

返回如下内容,阐明已安装完成。

6、至此,PHP的Redis扩展已安装完成。

三、测试验证

1、编写生产者,代码内容如下。

[code]vim producer.php <?php // 创建Redis实例 $redis = new Redis(); try { // 连接到Redis服务器 $redis->connect('redis', 6379); echo "乐成连接到Redis服务器!\r\n"; // 将消息入队(添加到列表的尾部) $datetime = date('Y/m/d H:i:s'); $message = 'Hello Max!'; $redis->rPush('message_queue', $message); echo "消息已入队,datetime={$datetime},message={$message}\r\n"; } catch (RedisException $e) { // 处理惩罚连接错误 echo "无法连接到Redis服务器: " . $e->getMessage(); } // 关闭Redis连接 $redis->close();[/code]

2、编写消费者,代码内容如下。

[code]vim consumer.php <?php // 创建Redis实例 $redis = new Redis(); try { // 连接到Redis服务器 $redis->connect('redis', 6379); echo "乐成连接到Redis服务器!\r\n"; while (true) { // 可以使用BLPOP命令来壅闭等待消息 $message = $redis->blPop('message_queue', 0); // 0表现无穷等待 if ($message !== null) { $datetime = date('Y/m/d H:i:s'); list($queue, $msg) = $message; echo "消息出列,datetime={$datetime},queue=${queue},message=${msg}\r\n"; } usleep(100); } } catch (RedisException $e) { // 处理惩罚连接错误 echo "无法连接到Redis服务器: " . $e->getMessage(); } // 关闭Redis连接 $redis->close();[/code]

3、启动消费端,实行如下命令。

[code]php consumer.php[/code]

正常情况会返回如下内容,开始监听消息。

4、运行生产端,实行如下命令。

[code]php producer.php[/code]

正常情况会返回如下内容。

5、再看消费端接收到的消息,正常返回如下内容。

上面的截图是实行了三次生产端,天生了三条消息。

6、至此,PHP和Redis实现消息队列的功能已验证完成。

总结

其实PHP和Redis实现消息队列的功能,使用的是Redis的List这种数据布局。

使用rPush入列、blPop出列,实现队列的先进先出(FIFO)。

也可以使用lPush入列、blPop出列,来实现队列的先进后出(FILO)。

实现PHP和Redis消息队列的功能,其实就以下三个步调。

1、安装Redis。

2、安装PHP的Redis扩展。

3、编写生产者、消费者代码举行测试验证。

上面的代码只是做个简朴的示例,如果运用到实际的项目当中需要做进一步的优化。

到此这篇关于使用PHP和Redis实现消息队列功能的文章就先容到这了,更多相关PHP Redis消息队列内容请搜索脚本之家从前的文章或继续浏览下面的相关文章希望各人以后多多支持脚本之家!


来源:https://www.jb51.net/program/318671cql.htm
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
关闭

站长推荐上一条 /6 下一条

QQ|手机版|小黑屋|梦想之都-俊月星空 ( 粤ICP备18056059号 )|网站地图

GMT+8, 2025-7-2 01:02 , Processed in 0.033428 second(s), 19 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2025 Discuz! Team.

返回顶部