Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息。
Redis 客户端可以订阅任意数量的频道。
下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 —— client2 、 client5 和 client1 之间的关系:
当有新消息通过 PUBLISH 命令发送给频道 channel1 时, 这个消息就会被发送给订阅它的三个客户端:
PSUBSCRIBE pattern [pattern ...] 订阅一个或多个符合给定模式的频道。 2 PUBSUB subcommand [argument [argument ...]] 查看订阅与发布系统状态。 3 PUBLISH channel message 将信息发送到指定的频道。 4 PUNSUBSCRIBE [pattern [pattern ...]] 退订所有给定模式的频道。 5 SUBSCRIBE channel [channel ...] 订阅给定的一个或多个频道的信息。 6 UNSUBSCRIBE [channel [channel ...]] 指退订给定的频道。二、jedis 操作发布订阅者:
package com.ZQQQ;
import javafx.scene.input.DataFormat;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPubSub;
import java.text.SimpleDateFormat;
import java.util.Date;
public class SubscriberRedis extends JedisPubSub {
@Override
public void onMessage(String channel, String message) {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("订阅者:订阅频道["+channel+"],收到消息["+message+"],时间:"+df.format(new Date()));
}
public static void main(String[] args) {
System.out.println("启动订阅者:");
Jedis jedis = new Jedis("127.0.0.1",6379);
// 创建订阅者
SubscriberRedis subscriberRedis = new SubscriberRedis();
//订阅频道
jedis.subscribe(subscriberRedis,"HZQ");
}
}
操作步骤:
1、先把 main 方法运行起来,等消息。。
2、在本地命令的方式发送给订阅者,看看效果吧。
127.0.0.1:6379> PUBLISH HZQ "ss" (integer) 1 127.0.0.1:6379> PUBLISH HZQ "ni tai shuai le ba " (integer) 1 127.0.0.1:6379> PUBLISH HZQ "ni tai shuai le ba" (integer) 1 127.0.0.1:6379> PUBLISH HZQ "ni eat le ma" (integer) 1 127.0.0.1:6379> PUBLISH HZQ "city shanghai" (integer) 1 127.0.0.1:6379>
接收到的消息:
二、下面以jedis 方式增加发布者与订阅者互通发送消息:
package com.ZQQQ;
import redis.clients.jedis.Jedis;
import java.util.Scanner;
public class PublishRedis {
// 启动main方法
public static void main(String[] args) {
System.out.println("启动发布者:");
Jedis jedis = new Jedis("127.0.0.1",6379);
Scanner scanner = new Scanner(System.in);
jedis.publish("HZQ","city ShanghaiPuDong");
System.out.println("消息发送完毕");
}
}
- 看到订阅者多了一条消息



