主节点3 订阅configserver频道
127.0.0.1:6379> subscribe configserver
Reading messages… (press Ctrl-C to quit)
-
“subscribe”
-
“configserver”
-
(integer) 1
从节点1 订阅configserver频道
从节点2 订阅configserver频道
从节点3 订阅configserver频道
127.0.0.1:6379> subscribe configserver
Reading messages… (press Ctrl-C to quit)
-
“subscribe”
-
“configserver”
-
(integer) 1
2、主节点一发送消息,测试其他节点能否收到订阅
主节点发布 "test subscribe"消息
127.0.0.1:6379> publish configserver “test subscribe”
(integer) 2
主节点2 主节点3 打印
-
“message”
-
“configserver”
-
“test subscribe”
正常接收到消息
从节点1 从节点2 从节点3 打印
-
“message”
-
“configserver”
-
“test subscribe”
正常接收到消息
说明主从同步也一样可以支持发布订阅的功能。具体性能还需进一步测试。
二、发布订阅性能测试
1、创建100个线程,订阅test2
public class RedisSubScribeTask implements Runnable {
private String Name;
public RedisSubScribeTask(String name) {
Name = name;
}
@Override
public void run() {
RedisDaoImpl redis = new RedisDaoImpl();
redis.init();
Jedis jedis = redis.pool.getResource();
if (jedis != null) {
RedisMsgSubListener redisMsgSubListener = new RedisMsgSubListener();
System.out.println(“线程” + Name + “启动”);
jedis.subscribe(redisMsgSubListener, “test2”);
}
}
}
public static void main(String[] args) {
for (int i = 0; i <= 100; i++) {
RedisSubScribeTask redisSubScribeTask = new RedisSubScribeTask(String.valueOf(i));
new Thread(redisSubScribeTask).start();
}
}
public class RedisMsgSubListener extends JedisPubSub {
public void onMessage(String channel, String message) {
System.out.println(channel + " is:" + message);
}
public void onPMessage(String pattern, String channel, String message) {
}
public void onSubscribe(String channel, int subscribedChannels) {
}
public void onUnsubscribe(String channel, int subscribedChannels) {
}
public void onPUnsubscribe(String pattern, i
【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】
浏览器打开:qq.cn.hn/FTf 免费领取
nt subscribedChannels) {
}
}
2、定义main方法,发布消息
public static void main(String[] args) {
RedisDaoImpl redis = new RedisDaoImpl();
redis.init();
redis.pool.getResource().publish(“test2”, “test”);
}
3、测试结果为秒回
4、将线程改为300个,测试结果也为秒回
5、将连件数升为500,依旧没有延迟
|
Clients
connected_clients:500
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0
127.0.0.1:6379>
6、连接数升为1000,其余两个为主从同步。看是否存在延迟