redis支援這樣一種特性,你可以將資料推到某個資訊管道中,然後其它客戶端可以通過訂閱這些管道來獲取推送過來的資訊。使用redis的pub/sub,接收方在某個channel註冊為乙個訂閱者,然後監聽這個channel,一旦有訊息發到這個channel上則自動接收訊息, 利用這個特性可以輕易的實現訊息推送功能。
1. 使用rediscli測試
客戶端a訂閱通道:
redis 127.0.0.1:6379> subscribe channeltest
客戶端b往該通道傳送訊息:
redis 127.0.0.1:6379>publish channeltest hello(integer)
1redis
127.0.0.1:6379>publish channeltest world
(integer)
1
然後客戶端a就能獲取到推送的資訊
redis 127.0.0.1:6379>subscribe channeltestreading messages... (press ctrl-c to quit)
1) "
subscribe
"2) "
channeltest
"3) (integer) 1
1) "
message
"2) "
channeltest
"3) "
hello
"1) "
message
"2) "
channeltest
"3) "
world
"
2. 批量訂閱測試
客戶端a訂閱通道:
redis 127.0.0.1:6379> subscribe channeltest*
客戶端b往該通道傳送訊息:
redis 127.0.0.1:6379>publish channeltest1 hello(integer) 1redis 127.0.0.1:6379>publish channeltest2 world
(integer) 1
然後客戶端a就能獲取到推送的資訊:
redis 127.0.0.1:6379> psubscribe channeltest*reading messages... (press ctrl-c to quit)1) "
psubscribe
"2) "
channeltest*
"3) (integer) 1
1) "
pmessage
"2) "
channeltest*
"3) "
channeltest1
"4) "
hello
"1) "
pmessage
"2) "
channeltest*
"3) "
channeltest2
"4) "
world
"
3. c#客戶端實現
客戶端使用teamdev.redis
classprogram
catch
(exception e)
console.readline();
}static
void redisdataaccessprovider_messagereceived(string channelname, string
message)
}static
void redisdataaccessprovider_channelsubscribed(string
channelname)
}
使用redis進行發布訂閱訊息
redis 發布訂閱 pub sub 是一種訊息通訊模式 傳送者 pub 傳送訊息,訂閱者 sub 接收訊息。redis 客戶端可以訂閱任意數量的頻道。redis提供了發布訂閱功能,可以用於訊息的傳輸,redis的發布訂閱機制包括三個部分,發布者,訂閱者和channel。發布者和訂閱者都是redis...
iOS 利用PHP來進行訊息推送
前提 準備好推送證書 aps development.cer及其p12檔案aps development.p12 開始 假設p12檔案 密碼是 123456 終端操作 進入到存放 cer與 p12檔案的資料夾 1.利用 aps development.cer 檔案生成 pem 檔案openssl x...
使用nsqlookupd來推送訊息
其實有點兒文不對題,不是使用nsqlookupd來推送的,最終還是使用nsqd來進行推送。nsq的golang客戶端中,consumer實現了從nsqlookupd中動態拉取服務列表,並進行消費,但是producer中沒有實現這個,假設有n個nsqd節點,某乙個不可用了,那麼不就完蛋了?於是今天自己...