Python 操作 Redis 发布订阅

Python 操作 Redis 发布订阅

介绍

Redis可以通过多个客户机订阅相同的频道,一个服务机在相应频道进行发布,从而实现在客户机收听服务机发布相应信息,可以利用这个机制实现多个客户机之间的信息同步等。

可以通过开启两个redis-cli终端

订阅端:

image-20210809112553514

发布端:

发布端在test频道发布一个Hello!信息,此时回到订阅端,即可看到收到相应的信息

image-20210809112844851

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

原文地址:https://www.cnblogs.com/JoshuaYu/p/15119650.html