【PHP面试题80】Redis消息发布与订阅功能怎么用的?

news2024/11/22 16:09:47

文章目录

  • 🚀一、前言
  • 🚀二、PHP中安装Redis扩展
  • 🚀三、Redis消息发布与订阅
    • 🔎3.1 创建发布者
    • 🔎3.2 创建订阅者:
    • 🔎3.3 运行发布者和订阅者:
  • 🚀四、总结


🚀一、前言

本文已收录于PHP全栈系列专栏:PHP面试专区。做全网最全最有营养的PHP面试大全。
计划将全覆盖PHP开发领域所有的面试题,对标资深工程师/架构师序列,欢迎大家提前关注锁定。

Redis消息发布与订阅是Redis提供的一种消息传递机制,它允许一个或多个生产者通过发布消息的方式将消息发送给一个或多个消费者。今天讲解一下PHP语言进行Redis消息发布与订阅这个功能。建议先把文章收藏一下以免找不到了。
在这里插入图片描述

⭐⭐⭐ 记得先收藏文章,关注作者。 ⭐⭐⭐

🚀二、PHP中安装Redis扩展

首先需要在PHP环境中安装Redis扩展。可以通过以下命令安装Redis扩展:

pecl install redis

🚀三、Redis消息发布与订阅

🔎3.1 创建发布者

<?php
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

// 发布消息到频道
$channel = 'test_channel';
$message = 'Hello, Redis!';
$redis->publish($channel, $message);

$redis->close();
?>

在上面的代码中,首先创建一个Redis实例并连接到Redis服务器。然后使用publish方法将消息发布到指定的频道。在这里,我们发布了一条消息到名为test_channel的频道。

🔎3.2 创建订阅者:

<?php
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

// 订阅频道
$channel = 'test_channel';
$redis->subscribe([$channel], function ($instance, $channelName, $message) {
    echo "Received message {$message} from channel {$channelName}\n";
});

$redis->close();
?>

在上面的代码中,同样创建了一个Redis实例并连接到Redis服务器。然后使用subscribe方法订阅指定的频道。通过传递一个回调函数给subscribe方法,可以实时接收到消息。每当有新消息发布到已订阅的频道时,回调函数就会被调用。在这里,我们简单地将收到的消息打印到控制台。

🔎3.3 运行发布者和订阅者:

在命令行中运行以上两个脚本文件,首先运行发布者脚本,然后再运行订阅者脚本。你会看到订阅者即时地接收到发布者发送的消息,并打印出来。

需要注意的是,Redis的发布与订阅是基于订阅/发布模式实现的,因此必须保持订阅者一直运行,才能持续接收消息。如果订阅者关闭了连接,那么它就无法接收到发布者发送的消息。

另外,可以使用多个订阅者同时订阅同一个频道。所有订阅者都会接收到发布到该频道的消息。

🚀四、总结

以上就是使用PHP语言进行Redis消息发布与订阅的详细讲解。希望对你有所帮助!

本文已收录于PHP全栈系列专栏:PHP面试专区。做全网最全最有营养的PHP面试大全。
计划将全覆盖PHP开发领域所有的面试题,对标资深工程师/架构师序列,欢迎大家提前关注锁定。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/777772.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

tomcat 使用部署

--烛光照亮了晚餐&#xff0c;照不出个答案。 不BB。 --部署web项目&#xff08;无 maven 纯web项目&#xff09; 直接把整个项目放到tomcat的webapps目录的下面然后重启tomcat即可 --部署html静态项目 直接把静态html放到tomcat的webapps目录下面即可&#xff0c;不要重命…

spring中bean实例化的三种方式 -- Spring入门(二)

文章目录 前言1.Bean实例化简介2.bean的实例化 -- 构造方法3.bean的实例化 -- 静态工厂实例化4.bean实例化 -- 实例工厂和FactoryBean5.三种bean实例化方式的区别 总结 前言 为了巩固所学的知识&#xff0c;作者尝试着开始发布一些学习笔记类的博客&#xff0c;方便日后回顾。…

JDBC之用IDEA连接SQLServer数据库实用教程

目录 前言 一、数据库准备 1.通过SQLServer配置管理器打开TCP/IP协议&#xff0c;设置状态为已启用 2.数据库登录模式设置为身份验证登录&#xff08;如果已经设置可忽略此步骤&#xff09; 3.下载SQLServer驱动jar包 二、IDEA准备 1.导入SQLServer驱动jar包 2.编写测试代…

【UE5 多人联机教程】02-开始游戏菜单控件

目录 步骤 一、完善开始游戏菜单控件 二、控件功能实现 2.1 “开始游戏”按钮切换界面 2.2 “创建房间”、“加入房间”按钮切换界面 2.3 “创建房间”按钮 步骤 一、完善开始游戏菜单控件 打开“UMG_Main” 首先在控件切换器外层包裹一个画布面板 然后调整控件切换器全…

Docker-volume【基础使用】

目录 【1】将本地的目录挂载到容器中 【2】volume卷&#xff0c;持久化 【3】volume数据共享 【4】volume持久化的作用 【5】volume - 随机卷的使用方式 【6】 启动nginx容器访问80出现HELLO&#xff0c;访问81出现WORLD 【1】将本地的目录挂载到容器中 1、容器的数据目录…

第112天:免杀对抗-加载器分离无文件落地图片隐写SOCK管道参数协议化

知识点 #知识点&#xff1a; 1、无文件落地&分离拆分-将shellcode从文本中提取-file 2、无文件落地&分离拆分-将shellcode与加载器分离-argv 3、无文件落地&分离拆分-将shellcode远程协议加载-http 4、无文件落地&分离拆分-将shellcode通过管道传输-socket 5、…

设计模式与技术场景面试题详解

工厂方法模式 简单工厂模式 工厂方法模式 抽象工厂模式 策略模式 工厂模式策略模式&#xff08;登录案例&#xff09; 责任链模式 技术场景 单点登录怎么实现 权限认证是如何实现的 上传数据的安全性你们怎么控制 你负责的项目遇到了哪些棘手的问题&#xff1f;怎么解决的 你们…

Vue系列第二篇:初识Vue项目

上一篇我搭建了Vue开发环境&#xff0c;创建了一个demo项目&#xff0c;借助nginx将Vue项目编译部署。这一篇来看一下Vue项目的结构。如下图所示&#xff1a; 我就创建一个空项目&#xff0c;结果Vue脚手架就帮我自动生成了这么多文件&#xff0c;看着挺吓人的。不用怕&#xf…

第十一章、【Linux】正则表达式与文件格式化处理

正则表达式 &#xff08;Regular Expression, RE, 或称为常规表达式&#xff09;是通过一些特殊字符的排列&#xff0c;用以“搜寻/取代/删除”一列或多列文字字串&#xff0c; 简单的说&#xff0c;正则表达式就是用在字串的处理上面的一项“表示式”。正则表达式并不是一个工…

「网络编程」传输层协议_ TCP协议学习_及原理深入理解(一)[万字详解]

「前言」文章内容大致是传输层协议&#xff0c;TCP协议讲解&#xff0c;续上篇UDP协议。 「归属专栏」网络编程 「主页链接」个人主页 「笔者」枫叶先生(fy) 目录 一、TCP协议介绍二、TCP协议2.1 解包与分用2.2 谈谈可靠性2.3 TCP的工作模式2.4 确认应答(ACK)机制2.5 16位序号与…

【基于CentOS 7 的SSH服务】

目录 一、概念 二、特点 三、身份验证机制 1.密码验证 2.密钥对验证 四、验证过程 五、加密机制 1.单向加密 2.对称加密 3.非对称加密 六、基本参数 1.服务名 2.端口号 3.配置文件 3.1 服务器端 3.2 客户端 4.配置文件解析 4.1 /etc/ssh/sshd_config 4.2 /e…

机器学习 day29(高偏差、高方差,参数d对模型的影响)

1. 高偏差、高方差、拟合能力、泛化能力 偏差和方差分别代表拟合能力和泛化能力若给左图数据集拟合一阶多项式&#xff08;d取1&#xff09;&#xff0c;则该模型有很高的偏差&#xff08;欠拟合&#xff09;。因为它对训练集和验证集的表现均不好&#xff0c;所以Jtrain很高…

使用STM32 再实现循迹/跟随/摇头避障小车

循迹小车 硬件介绍和接线 TCRT5000 使用方法和原理见89C52时期的介绍。 循迹小车需要使用两个TCRT5000&#xff0c;左侧的DO接到PB3&#xff1b;右侧的DO接到PB4 CubeMX 1. 在上节的基础上进行修改 配置两个传感器的GPIO 2. 惯例配置更新代码 Keil 注意&#xff0c;如果…

Linux 学习记录54(ARM篇)

Linux 学习记录54(ARM篇) 本文目录 Linux 学习记录54(ARM篇)一、框图分析1. 芯片手册内部框图2. 操作GPIO过程 二、通过汇编完成GPIO操作1. 常用的汇编指令2. GPIO初始化流程3. 查找相关寄存器(1. RCC寄存器(2. GPIO寄存器>1. 模式配置寄存器>2. 输出模式配置寄存器>3…

【云原生】Prometheus之部署 Alertmanager 发送告警

前言 1. Alertmanager 发送告警的介绍 Prometheus 对指标的收集、存储与告警能力分属于 Prometheus Server 和 AlertManager 两个独立的组件&#xff0c;前者仅负责定义告警规则生成告警通知&#xff0c; 具体的告警操作则由后者完成。 Alertmanager 负责处理由 Prometheus…

wxchart 小程序 线条图不显示y轴的网格线 (分割线)

如下图&#xff1a;项目需求不显示包括x轴的6条灰色分割线。 分析&#xff1a; 看了一下源码已经写死了是5条分割线&#xff0c;加一条x轴刻度线。没给公开配置方法。 解决方案&#xff1a; 既然没有配置项目&#xff0c;可以转变思路&#xff0c;把这些线条配置成白色&…

一文掌握如何前后端分离?

随着科技的进步和发展&#xff0c;低代码开发产品拥有广阔的市场前景。前后端分离似乎早已经是发展趋势了&#xff0c;因为做好前后端分离对于前后端的工程师而言是非常有利的&#xff0c;这样也有利于提升办公协作效率。那么&#xff0c;如何前后端分离&#xff1f;分别都有哪…

CentOS 安装Mysql8

1.检查是否已经安装mysql&#xff0c;停止mysql服务&#xff0c;删除mysql ps -ef | grep -i mysql systemctl stop mysqld rpm -e mysql 2.配置仓库 更新秘钥 rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 安装mysql8的yum源 rpm -Uvh https://dev.mysql.…

基于linux下的高并发服务器开发(第二章)- 2.17 内存映射(1)

11 / 内存映射相关系统调用 #include <sys/mman.h> void* mmap(void *addr, size_t length, int prot, int flags,int fd, off_t offset); - 功能&#xff1a;将一个文件或者设备的数据映射到内存中 - 参数&#xff1a; - void* addr:NULL,由内核指定 - length:要映射的…

【OpenCV】常见问题及解决办法

文章目录 0 前言1 中文乱码问题2 非法路径问题 0 前言 本篇博客主要是总结OpenCV使用过程中遇到的一些问题&#xff0c;以及对应的解决办法&#xff0c;这里重点是关注OpenCV&#xff0c;既有基于C的&#xff0c;也有基于Python的&#xff0c;比较全面&#xff0c;而且也会随着…