美文网首页
redis的消息订阅发布功能

redis的消息订阅发布功能

作者: 北你妹的风 | 来源:发表于2016-10-20 16:03 被阅读600次

想不到redis会提供pub/sub功能。消息订阅发布模式就不说了,跟观察者模式很接近。

redis 作为一个publish/subscribe server,起到了消息路由的功能。订阅者可以通过subscribe和psubscribe命令向redis server订阅自己感兴趣的消息类型,当发布者通过publish命令向redis server发送特定类型的消息时。订阅该消息类型的全部client都会收到此消息。这里消息的传递是多对多的。一个client可以订阅多个channel,也可以向多个channel发送消息。

下面用代码做一下试验。采用的是jedis客户端,代码如下

public class PubSubTest extends JedisPubSub {

@Override

public void onMessage(String channel, String message) {

// TODO Auto-generated method stub

super.onMessage(channel, message);

System.out.println("收到渠道为"+channel+"的消息:"+message);

}

@Override

public void onSubscribe(String channel, int subscribedChannels) {

// TODO Auto-generated method stub

super.onSubscribe(channel, subscribedChannels);

System.out.println("订阅渠道"+channel);

}

@Override

public void onUnsubscribe(String channel, int subscribedChannels) {

// TODO Auto-generated method stub

super.onUnsubscribe(channel, subscribedChannels);

System.out.println("取消订阅渠道"+channel);

}

}

代码解读,创建一个类,继承自JedisPubSub,这是jedis中实现pub/sub的类。该类中会有一些方法需要重写。比如onMessage,收到订阅消息时会调用该类中的方法。onSubscribe,订阅某个渠道时,会调用该方法。onUnsubscribe,取消订阅某个渠道时,调用该方法。

然后在main方法里面调用以下代码

jedis=new Jedis("localhost");

PubSubTest test=new PubSubTest();

jedis.subscribe(test, "cctv5");

这段代码很简单,就是订阅名称为cctv5的渠道。当我在其他客户端publish消息时,就会触发onMessage方法。

看完这个小例子后应该对pub/sub功能有了一个感性的认识。需要注意的是当一个连接通过subscribe或者psubscribe订阅通道后就进入订阅模式。在这种模式除了再订阅额外的通道或者用unsubscribe或者punsubscribe命令退出订阅模式,就不能再发送其他命令。另外使用psubscribe命令订阅多个通配符通道,如果一个消息匹配上了多个通道模式的话,会多次收到同一个消息。

redis的pub/sub还是有点太单薄(实现才用150行代码)。在安全,认证,可靠性这方便都没有太多支持。

相关文章

  • Redis高级

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

  • SpringBoot 整合Redis 实现发布订阅

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

  • golang redis发布订阅 --- 2022-04-03

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

  • redis的消息订阅发布功能

    想不到redis会提供pub/sub功能。消息订阅发布模式就不说了,跟观察者模式很接近。 redis 作为一个pu...

  • 最通俗易懂的Redis发布订阅及代码实战

    发布订阅简介 除了使用List实现简单的消息队列功能以外,Redis还提供了发布订阅的消息机制。在这种机制下,消息...

  • 死磕Redis5.0订阅和发布

    最近和一些朋友讨论Redis的订阅和发布功能,发现有些公司喜欢用Redis的订阅和发布功能来当作消息中间件来使用,...

  • 04给女朋友讲讲Redis-发布订阅

    一、Redis发布订阅介绍 Redis发布订阅(pub/sub)是一种消息通信模式:发布者(pub)发送消息,订阅...

  • Redis高级知识

    Redis 发布订阅 Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(...

  • Redis学习(四)发布订阅

    Redis 发布订阅 Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(...

  • Redis 发布订阅

    Redis 发布订阅 Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(...

网友评论

      本文标题:redis的消息订阅发布功能

      本文链接:https://www.haomeiwen.com/subject/dxifuttx.html