Java實現Redis發布訂閱

2021-08-11 05:06:59 字數 2143 閱讀 5433

jedis使用指南

簡介

redis提供了基於「發布/訂閱」模式的訊息機制,此種模式下,訊息發布者和訂閱者不進行直接通訊,發布者客戶端向指定的頻道(channel)發布訊息,訂閱該頻道的每個客戶端都可以收到該訊息(頻道沒有」建立「的概念,可以直接訂閱、亦可直接發布訊息)。

下圖展示了頻道 channel1 , 以及訂閱這個頻道的三個客戶端 —— client2 、 client5 和 client1 之間的關係:

當有新訊息通過 publish 命令傳送給頻道 channel1 時, 這個訊息就會被傳送給訂閱它的三個客戶端:

例項

以下例項演示了發布訂閱是如何工作的。首先在我們封裝的jedisutils中加入發布和訂閱操作的方法:

/**

* 發布乙個訊息

* * @param channel

* @param message

*/public void publishmsg(string channel, string message) catch (exception e)

}

引數channel是訊息的頻道,message是訊息的內容。在junit測試或者其他的地方,使用工具類的此方法即可發布乙個訊息。

接收訊息**稍微複雜一些。首先定義乙個類繼承jedispubsub,然後實現其中未實現的方法,最後在工具類jedisutils中定義乙個操作的方法即可。**如下:

public class redismsgsublistener extends jedispubsub 

// 初始化訂閱時候的處理

public void onsubscribe(string channel, int subscribedchannels)

// 取消訂閱時候的處理

public void onunsubscribe(string channel, int subscribedchannels)

// 初始化按表示式的方式訂閱時候的處理

public void onpsubscribe(string pattern, int subscribedchannels)

// 取消按表示式的方式訂閱時候的處理

public void onpunsubscribe(string pattern, int subscribedchannels)

// 取得按表示式的方式訂閱的訊息後的處理

public void onpmessage(string pattern, string channel, string message)

}

在工具類jedisutils中定義乙個操作的方法

/**

* 接收訊息。在main方法呼叫後,會一直執行下去。當有發布對應訊息時,就會在jedispubsub中接收到!

* * @param jedispubsub

* @param channels

*/public void subscribemsg(jedispubsub jedispubsub, string channels) catch (exception e)

}

下面寫個方法測試下吧:

public class pubtest 

public static void main(string args)

}public class subtest

public static void main(string args)

}

建議測試時,分開方法進行測試。其中publishmsg()方法是用來測試發布訊息的,subscribemsg()是用來測試接收訂閱訊息的。這裡只是使用了普通訂閱,大家還可以使用模式訂閱。執行subscribemsg()方法後,客戶端會一直開啟著,不會關閉。另外,在其他的redis客戶端中發布一條訊息,控制台就會立刻輸出該訊息。

參考:

Java實現Redis發布訂閱

redis提供了基於 發布 訂閱 模式的訊息機制,此種模式下,訊息發布者和訂閱者不進行直接通訊,發布者客戶端向指定的頻道 channel 發布訊息,訂閱該頻道的每個客戶端都可以收到該訊息 頻道沒有 建立 的概念,可以直接訂閱 亦可直接發布訊息 下圖展示了頻道 channel1 以及訂閱這個頻道的三個...

Java實現Redis的訊息訂閱和發布

1.首先需要乙個訊息 類 package com.sogou.baike.testimport.testsubscribe import redis.clients.jedis.jedispubsub created by denglinjie on 2016 6 29.public class r...

Java實現Redis的訊息訂閱和發布

首先需要乙個訊息 類 html view plain copy package com.sogou.baike.testimport.testsubscribe import redis.clients.jedis.jedispubsub created by denglinjie on 2016 ...