博客
关于我
php redis pub/sub(Publish/Subscribe,发布/订阅的信息系统)之基本使用
阅读量:793 次
发布时间:2023-02-27

本文共 1320 字,大约阅读时间需要 4 分钟。

Redis Pub/Sub(发布/订阅信息系统)介绍

一、场景介绍

最近的项目需要一个实时消息通知系统,Redis的Pub/Sub功能正好满足需求。通过学习和使用Redis Pub/Sub,可以实现低成本、高效率的实时消息通知。

二、什么是Redis Pub/Sub

Pub/Sub(Publish/Subscribe)是一种基于事件的通信模式,广泛应用于大型系统的松散耦合交互。

  • 发布者(Publisher):将消息发布到指定频道,无需占用独特连接,可与其他操作并行。
  • 订阅者(Subscriber):订阅特定频道的消息,采用阻塞模式等待消息到来,需要使用单独的连接。

三、Redis Pub/Sub的基本使用

以下是Redis Pub/Sub的简单操作演示

  • 启动Redis服务端

    在终端中运行Redis服务器:

    redis-server
  • 启动Redis客户端作为订阅端

    打开新的终端窗口,连接Redis服务器并订阅频道test

    redis-cli -h 127.0.0.1 subscribe test
  • 启动Redis客户端作为发布者

    在另一个终端窗口中,发布消息至频道test

    redis-cli -h 127.0.0.1 publish test "hello,world"
  • 查看订阅到的消息

    切换到订阅端窗口,会收到刚发布的消息:

    127.0.0.1:6379> hello,world
  • 模式匹配订阅

    通过指定模式可以接收多个频道的消息。例如,订阅test.*匹配所有以test.开头的频道:

    redis-cli -h 127.0.0.1 subscribe test.*

    发布test.nametest.phone,订阅端会接收到所有匹配的消息。

  • 取消订阅

    使用PUNSUBSCRIBE命令取消订阅:

    redis-cli -h 127.0.0.1 punsubscribe test.*
  • 四、PHP Redis Pub/Sub应用

    以下是基于PHP实现Redis Pub/Sub的代码示例

  • 安装PHPRedis扩展

    如果尚未安装,参考相关文档进行安装。

  • PHP代码示例

    • 发布端(pub.php)

      connect('127.0.0.1', 6379);
      $redis->publish('test', 'hello,world');
      ?>
    • 订阅端(sub.php)

      pconnect('127.0.0.1', 6379, 0);
      $redis->subscribe(['test'], 'callback');
      ?>
      • callback函数接收消息:
      function callback($redis, $channel, $message) {  
      echo "Channel: $channel, Message: $message\n";
      }
    1. 启动消息发布端
      在终端中运行:
    2. php pub.php
      1. 查看订阅消息
        在订阅端终端中会看到发布的消息,如:
      2. 127.0.0.1:6379> hello,world

        通过以上方法,可以轻松实现Redis Pub/Sub功能,满足实时消息通知需求。

    转载地址:http://srvfk.baihongyu.com/

    你可能感兴趣的文章
    pandas -更改重新采样的时间序列的开始和结束日期
    查看>>
    pandas :to_excel() float_format
    查看>>
    pandas :加入有条件的数据框
    查看>>
    pandas :将多列汇总为一列,没有最后一列
    查看>>
    pandas :将时间戳转换为 datetime.date
    查看>>
    pandas :将行取消堆叠到新列中
    查看>>
    pandas DataFrame 中的自定义浮点格式
    查看>>
    Pandas DataFrame 的 describe()方法详解-ChatGPT4o作答
    查看>>
    Pandas DataFrame中删除列级的方法链接解决方案
    查看>>
    Pandas DataFrame中的列从浮点数输出到货币(负值)
    查看>>
    Pandas DataFrame中的列从浮点数输出到货币(负值)
    查看>>
    pandas DataFrame的一些操作
    查看>>
    Pandas Dataframe的日志文件
    查看>>
    pandas Groupby:创建两列的Groupby时,如何按正确的顺序对工作日进行排序?
    查看>>
    Pandas matplotlib 无法显示中文
    查看>>
    Pandas Plots:周末的单独颜色,x 轴上漂亮的打印时间
    查看>>
    Pandas 中的多索引旋转
    查看>>
    Pandas 中的日期范围
    查看>>
    pandas 中的时间序列箱线图
    查看>>
    Pandas 使用指南
    查看>>