博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java端实现RedisPUB/SUB(订阅发布)
阅读量:5924 次
发布时间:2019-06-19

本文共 2704 字,大约阅读时间需要 9 分钟。

一.准备

1.1 - 自行下载jedis jar包.

用maven的话

redis.clients
jedis
2.9.0
jar
compile

1.2 - 打开 redis 服务器待命.

二.代码

1/3.

先打开
SUB端:

package example.me.PubSub;import redis.clients.jedis.Jedis;import redis.clients.jedis.JedisPubSub;public class MySub {
public static void main(String[] args) { final String host = "127.0.0.1";// Redis服务所在地址 final int port = 6379; // 主机端口 @SuppressWarnings("resource") Jedis subJedis = new Jedis(host, port); JedisPubSub jedissubSub = new JedisPubSub() { public void onUnsubscribe(String channel, int num) { } public void onSubscribe(String channel, int num) { } public void onMessage(String channel, String msg) { System.out.println(channel + " : " + msg); } public void onPUnsubscribe(String channel, int num) { } /* * num 订阅数量 */ public void onPSubscribe(String channel, int num) { } /* * channel0订阅的channel正则表达式 * channel 匹配上该正则channel值 * msg 收到的消息 */ public void onPMessage(String channel0, String channel, String msg) { } }; /* * 启动订阅,当该方法启动时,将阻塞等待消息 * 说明: * 1.subscribe(JedisPubSub jedisPubSub, String... channels) * 是常规订阅方法,channel值基于完全匹配,方法中channels是多个要订阅的channel值 * 2.psubscribe(JedisPubSub jedisPubSub, String... patterns) * 是正则订阅方法,channel值基于正则匹配,方法中的patterns是多个订阅到正则表达式 * 不同的订阅将会触发JedisPubSub中不同的方法 */ subJedis.subscribe(jedissubSub, "news", "tvshow");//完全匹配 }}

2/3.

PUB端:

package example.me.PubSub;import redis.clients.jedis.Jedis;import redis.clients.jedis.JedisPool;import redis.clients.jedis.JedisPoolConfig;public class MyPub {
public static void main(String[] args) { JedisPoolConfig poolConfig = new JedisPoolConfig(); poolConfig.setMaxIdle(5); poolConfig.setMinIdle(1); poolConfig.setMaxWaitMillis(30000); JedisPool jedisPool = new JedisPool(poolConfig,"localhost", 6379, 100); Jedis pubJedis = jedisPool.getResource(); try{ pubJedis.publish("news", "Hello,MySubs~ ");//发送广播 }catch(Exception e){ e.printStackTrace(); }finally{ jedisPool.returnResource(pubJedis); jedisPool.close(); } }}

3/3.

同时我们在 redis-cli 端也订阅相同channel:
这里写图片描述

三.成果

jedis-SUB端:

这里写图片描述

redis-cli端:

这里写图片描述

四.声明

4.1 - 本篇仅作为基础,还有很多功能未展现.

4.2 - 已有很多十分优秀的开源项目供参考.

参考资料:

本文原文地址:
小可不才,恭听指正.

你可能感兴趣的文章
老男孩教育每日一题第120天-如何统计脚本执行的时间?
查看>>
IP 源防护
查看>>
Python学习-字符串格式化
查看>>
ccs
查看>>
mysql-cluster群集高可用(一)
查看>>
SVN更新失败,提示locked
查看>>
Java 集合Vector源码深入解析
查看>>
DNS and Bind 以及DNS服务器的构建
查看>>
SSL ×××原理介绍 IPsec原理
查看>>
WindowsPhone操作SkyDrive之获取共享文件
查看>>
Project Server 2013新手入门 (一)为PWA添加用户并分享网站
查看>>
MongoDB: 1. Database
查看>>
使用VBS脚本实现的Hosts文件一键配置
查看>>
ATOM插件activate-power-mode体验笔记
查看>>
socket 和 http
查看>>
九、redis高可用
查看>>
RMAN-08137: WARNING: archived log not deleted, needed for standby or upstream capture process
查看>>
限制Textarea字数并实时显示输入字数统计
查看>>
RPC OVER HTTPS
查看>>
linux的top命令参数详解
查看>>