Redis(十一)基于redis的发布订阅实现

Redis提供了发布订阅功能,可以用于消息的传输,Redis的发布订阅机制包括三个部分,发布者,订阅者和Channel。

发布者和订阅者都是Redis客户端,Channel则为Redis服务器端,发布者将消息发送到某个的频道,订阅了这个频道的订阅者就能接收到这条消息。Redis的这种发布订阅机制与基于主题的发布订阅类似,Channel相当于主题。

Redis发布订阅功能

(1)发送消息

Redis采用PUBLISH命令发送消息,其返回值为接收到该消息的订阅者的数量。

(2)订阅某个频道

Redis采用SUBSCRIBE命令订阅某个频道,其返回值包括客户端订阅的频道,目前已订阅的频道数量,以及接收到的消息,其中subscribe表示已经成功订阅了某个频道。

下边有一个小例子,我这里使用PHP来实现:

订阅端代码:

订阅端代码需要在shell中运行:

$redis = new Redis();
    $redis->pconnect("127.0.0.1", 6379);
    //订阅
    echo "订阅msg这个频道,等待消息推送... 
";
    $redis->subscribe(["xxxx"], "callfun");
    function callfun($redis, $channel, $msg)
    {
    
    
        print_r([
            "redis"   => $redis,
            "channel" => $channel,
            "msg"     => $msg
        ]);
    }//*/

Subscribe订阅命令,第一个参数是订阅的频道,第二个参数是回调函数。

在shell中运行结果如下:

1.png

等待推送。

推送端代码:

推送端在网页中运行。

$redis = new Redis();
    $redis->connect("127.0.0.1",6379);
 
    $redis->publish("xxxx", "来自msg频道的推送");
    echo "msg频道消息推送成功~ 
";
    $redis->close();///*/

推送端代码在网页中运行结束之后,我们去到shell中的结果如下图所示:

2.png

以上大概就是实现了redis的订阅及发布。当然,实际应用中肯定和上边的例子是不一样的。

这个需要到时候再看,大概理解订阅及发布的原理就好。

最后放一下redis发布订阅常用的一些命令:

Redis 发布订阅命令
下表列出了 redis 发布订阅常用命令:

序号

命令及描述

1

PSUBSCRIBE pattern [pattern   ...] 
  订阅一个或多个符合给定模式的频道。

2

PUBSUB subcommand [argument   [argument ...]] 
  查看订阅与发布系统状态。

3

PUBLISH channel message 
  将信息发送到指定的频道。

4

PUNSUBSCRIBE [pattern   [pattern ...]] 
  退订所有给定模式的频道。

5

SUBSCRIBE channel [channel   ...] 
  订阅给定的一个或多个频道的信息。

6

UNSUBSCRIBE [channel [channel   ...]] 
  指退订给定的频道。

有好的建议,请在下方输入你的评论。

欢迎访问个人博客
https://guanchao.site

欢迎访问小程序:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_39708228/article/details/113655727