欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

redis中怎么實現(xiàn)發(fā)布訂閱

redis中怎么實現(xiàn)發(fā)布訂閱,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

創(chuàng)新互聯(lián)于2013年成立,先為薩爾圖等服務建站,薩爾圖等地企業(yè),進行企業(yè)商務咨詢服務。為薩爾圖企業(yè)網站制作PC+手機+微官網三網同步一站式服務解決您的所有建站問題。

一、主從同步下,發(fā)布訂閱功能是否能正常使用

1、開啟五個redis客戶端,其中兩個主節(jié)點,三個從節(jié)點

主節(jié)點2 訂閱configserver頻道

主節(jié)點3 訂閱configserver頻道

127.0.0.1:6379> subscribe configserver
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "configserver"
3) (integer) 1

從節(jié)點1 訂閱configserver頻道

從節(jié)點2 訂閱configserver頻道

從節(jié)點3 訂閱configserver頻道

127.0.0.1:6379> subscribe configserver
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "configserver"
3) (integer) 1

2、主節(jié)點一發(fā)送消息,測試其他節(jié)點能否收到訂閱

主節(jié)點發(fā)布 "test subscribe"消息

127.0.0.1:6379> publish configserver "test subscribe"
(integer) 2

主節(jié)點2 主節(jié)點3 打印

1) "message"
2) "configserver"
3) "test subscribe"

正常接收到消息

從節(jié)點1 從節(jié)點2 從節(jié)點3 打印

1) "message"
2) "configserver"
3) "test subscribe"

正常接收到消息

說明主從同步也一樣可以支持發(fā)布訂閱的功能。具體性能還需進一步測試。

二、發(fā)布訂閱性能測試

1、創(chuàng)建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, int subscribedChannels) {
    }
    
}
2、定義main方法,發(fā)布消息
public static void main(String[] args) {
    RedisDaoImpl redis = new RedisDaoImpl();
    redis.init();
    redis.pool.getResource().publish("test2", "test");
}

3、測試結果為秒回

4、將線程改為300個,測試結果也為秒回

5、將連件數(shù)升為500,依舊沒有延遲

info clients
# Clients
connected_clients:500
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0
127.0.0.1:6379>

6、連接數(shù)升為1000,其余兩個為主從同步??词欠翊嬖谘舆t

info clients
# Clients
connected_clients:1002
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0

7、發(fā)現(xiàn)依舊沒有延遲。并且主從同步的訂閱test2的消息,也正常接受。

127.0.0.1:6379> subscribe test2
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "test2"
3) (integer) 1
1) "message"
2) "test2"
3) "test"
1) "message"
2) "test2"
3) "test"

8、針對1000個客戶端,并且進行連續(xù)發(fā)布100個消息

for (int i = 0; i <= 100; i++) {
 redis.pool.getResource().publish("test2", "test" + i);
// try {
// Thread.sleep(1000);
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
 }

關于redis中怎么實現(xiàn)發(fā)布訂閱問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關知識。

文章標題:redis中怎么實現(xiàn)發(fā)布訂閱
新聞來源:http://chinadenli.net/article38/gicipp.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供網站排名、ChatGPT、域名注冊網站策劃、響應式網站、網頁設計公司

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都網頁設計公司