Redis应用之订阅与发布
Redis应用之订阅与发布
一、利用redis-cli实现订阅发布
1.1 启动服务
./src/redis-server redis.conf
1.2 客户端A,订阅频道
./src/redis-cli
127.0.0.1:6379> subscribe channel1
Reading messages... (press Ctrl-C to quit)
1.3 客户端B,发布频道数据
./src/redis-cli
127.0.0.1:6379> publish channel1 "test message"
(integer) 1
1.4 客户端A,输出
1) "message"
2) "channel1"
3) "test message"
至此利用redis-cli实现消息订阅与发布
二、Java利用Jedis实现
2.1 创建订阅者
/**
* 订阅者
* @author GaoYuan
* @date 2018/9/17 下午9:06
*/
public class Subscriber extends JedisPubSub{
@Override
public void onMessage(String channel, String message) {
System.out.println("收到频道【" + channel + "】的消息:" + message);
}
@Override
public void onSubscribe(String channel, int subscribedChannels) {
System.out.println("成功订阅【"+ channel +"】");
}
public static void main(String[] args){
Jedis jedis = null;
try {
jedis = new Jedis(JedisConfig.HOST, JedisConfig.PORT);
jedis.subscribe(new Subscriber(), "channel1");
}catch (Exception e){
e.printStackTrace();
}finally {
if (jedis != null) {
jedis.close();
}
}
}
}
2.2 创建发布者
/**
* 发布者
* @author GaoYuan
* @date 2018/9/17 下午9:06
*/
public class Publisher {
public static void main(String[] args){
Jedis jedis = null;
try {
jedis = new Jedis(JedisConfig.HOST, JedisConfig.PORT);
jedis.publish("channel1", "你好,我是foruo!");
}catch (Exception e){
e.printStackTrace();
}finally {
if (jedis != null) {
jedis.close();
}
}
}
}
2.3 启动服务测试
先启动订阅者,控制台打印
成功订阅【channel1】
再启动发布者,在订阅者控制台成功打印如下内容
收到频道【channel1】的消息:你好,我是foruo!
至此利用jedis完成简单的发布/订阅功能。完整代码见
https://gitee.com/gmarshal/foruo-demo/tree/master/foruo-demo-redis/foruo-demo-redis-pubsub
博客
开源中国博客地址
https://my.oschina.net/gmarshal/blog/2052792
个人博客地址
欢迎关注我的个人微信订阅号:(据说这个头像程序猿专用)