1. 程式人生 > 其它 >Python 操作 Redis 釋出訂閱

Python 操作 Redis 釋出訂閱

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