Python 操作 Redis 釋出訂閱
阿新 • • 發佈:2021-08-09
Python 操作 Redis 釋出訂閱
介紹
Redis可以通過多個客戶機訂閱相同的頻道,一個服務機在相應頻道進行釋出,從而實現在客戶機收聽服務機發布相應資訊,可以利用這個機制實現多個客戶機之間的資訊同步等。
可以通過開啟兩個redis-cli終端
訂閱端:
釋出端:
釋出端在test頻道釋出一個Hello!資訊,此時回到訂閱端,即可看到收到相應的資訊
Python操作
首先需要安裝redis
這個庫
pip install redis
首先通過Python編寫釋出端的程式碼,注意,redis使用的資料均為字串,所以對於list
或者dict
,可以通過json進行序列化操作,才能實現儲存。
import json
import time
import redis
# 獲取redis連線
r = redis.Redis(host="192.168.0.103", port=6379)
# 定義資料
data = "Hello World!"
# 每隔1s釋出一份資料在test頻道
while True:
r.publish("test", json.dumps(data))
time.sleep(1)
訂閱端相對複雜一些:
import json import time import redis # 獲取redis連線 r = redis.Redis(host="192.168.0.103", port=6379) # 初始化監聽例項,括號內資料代表忽略收聽頻道傳送的訊息 listen = r.pubsub(ignore_subscribe_messages=True) # 訂閱test頻道,可以為多個 listen.subscribe("test") while True: # 獲取頻道的訊息 msg = listen.get_message() if msg: # json反序列化 data = json.loads(str(msg["data"], encoding='utf-8')) print(data) time.sleep(1)
還有更具體的操作可以檢視官方GitHub