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);

}

}

}


上一篇:redis压缩版怎么用

下一篇:电脑ssl被禁用怎么解决


redis
Copyright © 2002-2019 测速网 www.inhv.cn 皖ICP备2023010105号
测速城市 测速地区 测速街道 网速测试城市 网速测试地区 网速测试街道
温馨提示:部分文章图片数据来源与网络,仅供参考!版权归原作者所有,如有侵权请联系删除!

热门搜索 城市网站建设 地区网站制作 街道网页设计 大写数字 热点城市 热点地区 热点街道 热点时间 房贷计算器