redis發布訂閱

2021-10-02 06:01:22 字數 1999 閱讀 5889

import redis

class

redisbloking()

:"""

阻塞發布訂閱

"""def__init__

(self)

: self.__conn = redis.redis(host=

'127.0.0.1'

, port=

6379

) self.channel =

'long_channel'

defpublish

(self, msg)

:"""

發布訊息

:param msg:

:return:

"""self.__conn.publish(self.channel, msg)

return

true

defsubscribe

(self)

:"""

訂閱訊息

:return:

"""pub = self.__conn.pubsub(

) pub.subscribe(self.channel)

pub.parse_response(

)return pub

redis_obj = redisbloking(

)redis_obj.publish(

"發不了一條訊息"

)meg_obj = redis_obj.subscribe(

)message = meg_obj.parse_response(

)

import redis

class

redisnonblocking()

:"""

非阻塞發布訂閱

"""def__init__

(self, channelname)

: self.__conn = redis.redis(host=

'127.0.0.1'

, port=

6379

) self.key = channelname

defqueue_size

(self)

:"""

返回佇列中的訊息數量

:return:

"""return self.__conn.llen(self.key)

defput_msg

(self, msg)

:"""

發布訊息

:param msg:

:return:

"""self.__conn.rpush(self.key, msg)

defgetmsg_wait

(self, timeout=1)

:"""

訂閱訊息,設定等待時間

:param timeout: 預設1秒鐘等待

:return:

"""return self.__conn.blpop(self.key, timeout=timeout)

defgetmsg_nowait

(self)

:"""

訂閱訊息,不等待,沒有訊息返回none

:return:

"""return self.__conn.lpop(self.key)

redis_obj = redisnonblocking(

'long_channel'

)redis_obj.put_msg(

"發布一條訊息"

)redis_obj.getmsg_wait(timeout=

10)

發布訂閱

redis功能

redis資料介面操作

Redis 發布訂閱

redis 發布訂閱 pub sub 是一種訊息通訊模式 傳送者 pub 傳送訊息,訂閱者 sub 接收訊息。redis 客戶端可以訂閱任意數量的頻道。下圖展示了頻道 channel1 以及訂閱這個頻道的三個客戶端 client2 client5 和 client1 之間的關係 當有新訊息通過 pu...

Redis 發布訂閱

redis 發布訂閱 pub sub 是一種訊息通訊模式 傳送者 publish 傳送訊息,訂閱者 subscribe 接收訊息。redis 客戶端可以訂閱任意數量的頻道。下圖是 頻道 channel1 以及訂閱這個頻道的三個客戶端 client1 client2和 client3 當有新訊息通過 ...

Redis發布訂閱

概述 redis發布訂閱 pub sub 是種訊息通訊模式 傳送者 pub 傳送訊息,訂閱者 sub 訂閱訊息。redis客戶端可以訂閱任意數量的頻道。下圖展示了頻道channel以及訂閱它的三個客戶端 client2 client5和client1之間的關係 當有新的訊息publish到chann...