Linux 拨号vps windows公众号手机端

redis的订阅功能有什么用

lewis 7年前 (2018-10-13) 阅读数 7 #VPS/云服务器
文章标签 redis

redis订阅功能可以用于消息的传输,是一种消息通信模式,Redis客户端可以订阅任意数量的频道,具体实现代码:

packagecom.hcmony.sword.redis;

importorg.apache.commons.lang3.StringUtils;

importredis.clients.jedis.Jedis;

importredis.clients.jedis.JedisPool;

importredis.clients.jedis.JedisPubSub;

/**

*<h3>Shenjue.java基本描述</h3>

*/

publicclassRedisMQ{

privatestaticfinalStringTOPIC="TOPIC";

privatefinalJedisPooljedisPool;

publicRedisMQ(JedisPooljedisPool){

this.jedisPool=jedisPool;

}

/**

*发布消息

*@paramtopic

*@parammessge

*/

publicvoidpublish(Stringtopic,Stringmessge){

Jedisjedis=null;

if(StringUtils.isBlank(topic)){

topic=TOPIC;

}

try{

jedis=jedisPool.getResource();

jedis.publish(topic,messge);

}

finally{

if(null!=jedis){

jedis.close();

}

}

}

/**

*订阅消息

*@paramtopic

*@paramjedisPubSub

*/

publicvoidsubscribe(Stringtopic,JedisPubSubjedisPubSub){

Jedisjedis=null;

if(StringUtils.isBlank(topic)){

topic=TOPIC;

}

try{

jedis=jedisPool.getResource();

jedis.subscribe(jedisPubSub,topic);

}

finally{

if(null!=jedis){

jedis.close();

}

}

}

publicstaticvoidmain(String[]args){

//默认连接本地redis,

//loclhost:6379

JedisPooljedisPool=newJedisPool();

RedisMQpublish=newRedisMQ(jedisPool);

newThread(newRunnable(){

@Override

publicvoidrun(){

publish.subscribe("PID",newMyjedisPubSub());

}

}).start();

for(inti=0;i<100;i++){

publish.publish("PID","messge"+i);

}

}

publicstaticclassMyjedisPubSubextendsJedisPubSub{

@Override

publicvoidonMessage(Stringchannel,Stringmessage){

System.out.println("-------channelis"+channel+"messageis"+message);

}

}

}


版权声明

本文仅代表作者观点,不代表米安网络立场。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门