import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
public class Sub extends Thread {
private final JedisPool jedisPool;
private final RedisSubPubListener subscriber = new RedisSubPubListener();
public Sub(JedisPool jedisPool) {
super("SubThread");
this.jedisPool = jedisPool;
}
@Override
public void run() {
System.out.println(" 频道名称 "+ Constant.channel);
Jedis jedis = null;
try {
jedis = jedisPool.getResource();
jedis.subscribe(subscriber, Constant.channel);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (jedis != null) {
jedis.close();
}
}
}
public static void main(String[] args) {
// 替换成你的reids地址和端口 启动订阅线程
JedisPoolConfig poolConfig = new JedisPoolConfig();
JedisPool jedisPool = new JedisPool(poolConfig, "127.0.0.1", 6379,
0,"123456",1,
"redis");
Sub subThread = new Sub(jedisPool);
subThread.start();
}
}
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import redis.clients.jedis.JedisPubSub;
public class RedisSubPubListener extends JedisPubSub {
private static Logger logger = LoggerFactory.getLogger(RedisSubPubListener.class);
// 取得订阅的消息后的处理 接收订阅频道消息后,业务处理逻辑
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);
}
}
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
public class Pub {
public static void main(String[] args) {
// 替换成你的reids地址和端口
JedisPoolConfig poolConfig = new JedisPoolConfig();
JedisPool jedisPool = new JedisPool(poolConfig, "127.0.0.1", 6379, 0,"123456",1,"redis");
Jedis jedis = jedisPool.getResource();
jedis.publish(Constant.channel, "我是客户端*************");
jedis.close();
}
}