设为首页 收藏本站
查看: 861|回复: 0

[经验分享] redis_1 发布、订阅

[复制链接]

尚未签到

发表于 2016-12-19 08:04:10 | 显示全部楼层 |阅读模式
本文由larrylgq编写,转载请注明出处:http://blog.csdn.net/larrylgq/article/details/7395261
作者:吕桂强
邮箱:larry.lv.word@gmail.com

本例包括
jedis_demo:入口类
jedis_control:jedis控制器(jedis的连接池)
jedis_pub_sub_listener:订阅的监听器
singleton_agent:单例的代理类(连接池配置)
package com.larry.jedis;  
import redis.clients.jedis.Jedis;  
/**
* 入口类
* @author 吕桂强
* @email larry.lv.word@gmail.com
* @version 创建时间:2012-3-28 下午12:12:41
*/  
public class jedis_demo {  
jedis_control redis_util = jedis_control.get_singleton();  
public static void main(String[] args) {  
jedis_demo jedis_demo = new jedis_demo();  
new Thread(new Runnable(){  
@Override  
public void run() {  
jedis_control redis_util = jedis_control.get_singleton();  
Jedis jedis = redis_util.get_connection();  
jedis_pub_sub_listener pub_sub_listener = new jedis_pub_sub_listener();  
// 可以订阅多个频道  
// 订阅得到信息在lister的onMessage(...)方法中进行处理  
// jedis.subscribe(listener, "news.share", "news.log");  
// jedis.subscribe(listener, new String[]{"news.share","news.log"});  
jedis.psubscribe(pub_sub_listener, new String[] { "news.share" });// 使用模式匹配的方式设置频道  
}  
}).start();  
jedis_demo.publish();  
}  
/**
* 发布
*/  
public void publish() {  
Jedis jedis = redis_util.get_connection();   
jedis.publish("news.share", "ok");   
jedis.publish("news.share", "hello word");   
}  
}  

package com.larry.jedis;  
import redis.clients.jedis.Jedis;  
/**
* jedis控制器
* @author 吕桂强
* @email larry.lv.word@gmail.com
* @version 创建时间:2012-3-28 下午12:03:40
*/  
public final class jedis_control {  
//单例  
private static jedis_control _jedis_control;  
public static jedis_control get_singleton(){  
if(_jedis_control == null){  
_jedis_control = new jedis_control();  
}  
return _jedis_control;  
}  
/**      
* 获取连接实例        
* @return jedis        
*/      
public Jedis get_connection() {  
Jedis jedis = null;            
try {               
jedis = singleton_agent.get_jedispool().getResource();            
} catch (Exception e) {               
e.printStackTrace();            
}            
return jedis;        
}     
/**        
* 释放数据库连接        
* @param conn        
*/      
public void close_connection(Jedis jedis) {            
if (null != jedis) {               
try {                    
singleton_agent.get_jedispool().returnResource(jedis);               
} catch (Exception e) {  
e.printStackTrace();               
}            
}        
}   
}   


package com.larry.jedis;  
import redis.clients.jedis.JedisPubSub;  
/**
* 监听订阅事件
* @author 吕桂强
* @email larry.lv.word@gmail.com
* @version 创建时间:2012-3-28 下午12:09:20
*/  
public class jedis_pub_sub_listener extends JedisPubSub {  
// 取得订阅的消息后的处理  
public void onMessage(String channel, String message) {  
System.out.println(channel + "=" + message);  
}  
// 初始化订阅时候的处理  
public void onSubscribe(String channel, int subscribedChannels) {  
System.out.println(channel + "=" + subscribedChannels);  
}  
// 取消订阅时候的处理  
public void onUnsubscribe(String channel, int subscribedChannels) {  
System.out.println(channel + "=" + subscribedChannels);  
}  
// 初始化按表达式的方式订阅时候的处理  
public void onPSubscribe(String pattern, int subscribedChannels) {  
System.out.println(pattern + "=" + subscribedChannels);  
}  
// 取消按表达式的方式订阅时候的处理  
public void onPUnsubscribe(String pattern, int subscribedChannels) {  
System.out.println(pattern + "=" + subscribedChannels);  
}  
// 取得按表达式的方式订阅的消息后的处理  
public void onPMessage(String pattern, String channel, String message) {  
System.out.println(pattern + "=" + channel + "=" + message);  
}  
}  

package com.larry.jedis;  
import redis.clients.jedis.JedisPool;  
import redis.clients.jedis.JedisPoolConfig;  
/**
* 所有单例的代理类
* @author 吕桂强
* @email larry.lv.word@gmail.com
* @version 创建时间:2012-3-28 下午12:30:42
*/  
public class singleton_agent {  
//****************单例一个连接池***************  
private static JedisPool jedispool = null;  
/**         
* 获取连接池         
* @return 数据源         
*/      
public static JedisPool get_jedispool() {  
if(jedispool == null){  
JedisPoolConfig jedispool_config = new JedisPoolConfig();  
jedispool_config.maxActive = 20;  
jedispool_config.maxIdle = 0;  
jedispool_config.maxWait = 1000;  
jedispool_config.testOnBorrow = true;  
jedispool = new JedisPool(jedispool_config, "localhost", 6379);  
}  
return jedispool;      
}  
//end****************单例一个连接池***************  
}

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-316124-1-1.html 上篇帖子: Redis Set类型数据常用命令参考 下篇帖子: Redis命令详解-关键字
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表