Redis七(發布訂閱)

2022-06-09 10:21:06 字數 1873 閱讀 4112

redis 通過 publish 、 subscribe 等命令實現了訂閱與發布模式, 這個功能提供兩種資訊機制, 分別是訂閱/發布到頻道和訂閱/發布到模式

訂閱者可以訂閱乙個或多個頻道,發布者向乙個頻道傳送訊息後,所有訂閱這個頻道的訂閱者都將收到訊息,而發布者也將收到乙個數值,這個數值是收到訊息的訂閱者的數量。訂閱者只能收到自它開始訂閱後發布者所發布的訊息,而之前發布的訊息是收不到的。

redis 的 subscribe 命令可以讓客戶端訂閱任意數量的頻道, 每當有新資訊傳送到被訂閱的頻道時, 資訊就會被傳送給所有訂閱指定頻道的客戶端。

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

demo如下:

redispubsub.py

#

用來連線redis server並封裝了發布與訂閱的功能

import

redis

class

redispubsubhelper():

def__init__

(self):

#redis連線物件

self.__conn = redis.redis(host='

192.168.49.130')

defpublish(self, message, channel):

#redis物件的publish方法(發布)

#往指定的頻道中發布資訊

self.__conn

.publish(channel, message)

return

true

defsubscribe(self, channel):

#返回了乙個發布訂閱的物件

pub = self.__conn

.pubsub()

#訂閱到指定的頻道上

pub.subscribe(channel)

pub.parse_response()

return pub

訂閱者:

#

!/usr/bin/env/ python

#-*-coding:utf-8 -*-

import

redispubsub

#建立乙個連線redis的物件(使用發布與訂閱模式的redis物件)

r =redispubsub.redispubsubhelper()

#建立發布訂閱的物件

redis_sub=r.subscribe('

fm104.9

')#指定訂閱頻道

while

true:

#接收頻道中的內容,**會阻塞到這裡,直到收到訊息

msg=redis_sub.parse_response()

print(msg)

發布者:

#

!/usr/bin/env/ python

#-*-coding:utf-8 -*-

import

redispubsub

#建立乙個連線redis的物件(使用發布與訂閱模式的redis物件)

r =redispubsub.redispubsubhelper()

#向指定的頻道發布訊息

r.publish('

hello world

', '

fm104.9

')

redis 二 發布訂閱

參考資料 redis 4.x cookbook 中文版 redis官方文件 注 本文redis的版本為 5.0.3 注意,如果先發布訊息,然而頻道沒有訂閱者,這時的訊息會被丟失 redis的發布訂閱是乙個訊息推送的機制 發布者 publisher 向指定頻道 channel 發布訊息 message...

Redis學習 4 發布訂閱

redis 發布訂閱 pub sub 是一種訊息通訊模式 傳送者 pub 傳送訊息,訂閱者 sub 接收訊息。redis 客戶端可以訂閱任意數量的頻道。當有新訊息通過 publish 命令傳送給頻道 channel1 時,這個訊息就會被傳送給訂閱它的三個客戶端 訂閱乙個或多個符合給定模式的頻道。pu...

Redis教程09 發布和訂閱

redis教程08 zset有序集合介紹 redis教程07 set集合介紹 redis教程06 list型別命令介紹 redis教程05 hash型別命令介紹 redis教程04 string型別之bit redis教程03 string介紹 redis 發布訂閱 pub sub 是一種訊息通訊模...