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

2024-04-19 0 844
目录
  • 前言
  • 一、安装Redis
  • 二、安装PHP的Redis扩展
  • 三、测试验证
  • 总结

前言

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

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

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

如何使用docker部署php服务

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

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

一、安装Redis

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

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

二、安装PHP的Redis扩展

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

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

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

docker exec -ti test1 sh

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

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

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

extension=redis.so

5、检查扩展是否配置成功,执行如下命令。

php -m|grep redis

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

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

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

三、测试验证

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

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();

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

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();

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

php consumer.php

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

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

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

php producer.php

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

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

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

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

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

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消息队列内容请搜索悠久资源网以前的文章或继续浏览下面的相关文章希望大家以后多多支持悠久资源网!

您可能感兴趣的文章:

  • php+redis实现消息队列功能示例
  • php基于Redis消息队列实现的消息推送的方法
  • php+redis消息队列实现抢购功能
  • PHP+Redis 消息队列 实现高并发下注册人数统计的实例
  • PHP基于Redis消息队列实现发布微博的方法

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悠久资源 PHP 使用PHP和Redis实现消息队列功能 https://www.u-9.cn/biancheng/php/188106.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务