Python&Redis 发布订阅

本文介绍如何使用Redis进行消息订阅与发布操作,包括控制台操作及Python实现。通过控制台指令SUBSCRIBE与PUBLISH演示基本流程,再利用Python封装类实现自动化订阅发布功能。
Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

1、Redis控制台操作

先开启一个Redis控制台开启订阅:

SUBSCRIBE fm666

返回参数解释:
subscribe,表示订阅成功
unsubscribe,表示取消订阅成功
message,表示其它终端发布消息
然后开启一个Redis控制台开始发布消息:

PUBLISH fm666 "hello redis"

这是注意第一个订阅的Redis控制台会有相应的消息输出

2、Python操作Redis订阅发布

封装一个订阅发布的类

# redis_publish.py
import redis

class RedisHelper:
    def __init__(self):
        self.__conn = redis.Redis(host='127.0.0.1',port=6379)
        self.chan_sub = 'fm666'
        self.chan_pub = 'fm666'

    def public(self,msg):
        self.__conn.publish(self.chan_pub,msg)
        return True

    def subscribe(self):
        pub = self.__conn.pubsub() # 打开收音机
        pub.subscribe(self.chan_sub) # 调频道
        pub.parse_response() # 准备接收
        return pub

订阅端代码:

from redis_publish import RedisHelper

obj = RedisHelper()
redis_sub = obj.subscribe()

while True:
    msg = redis_sub.parse_response()
    print(msg)

'''
运行此程序后,在redis控制台 PUBLISH fm666 "hello redis" 
就会实时的输出
'''

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

PythonRedis 的结合可以非常高效地实现实时通信功能,特别是通过Redis的发布/订阅(Pub/Sub)机制。以下是关于如何利用 Python 结合 Redis 进行消息发布的简要介绍: ### 使用步骤 #### 安装依赖库 首先需要安装 `redis-py` 库来操作 Redis 数据库: ```bash pip install redis ``` #### 发布者示例代码 创建一个简单的脚本作为消息发送方,即“发布者”。它会向指定频道推送信息。 ```python import redis # 创建连接到本地运行的Redis服务器实例,默认端口6379 r = redis.Redis(host='localhost', port=6379) def publish_message(channel, message): r.publish(channel, message) print(f"Published '{message}' to channel {channel}") if __name__ == "__main__": # 测试用的消息通道名和内容 test_channel = "test-channel" test_message = "Hello from Publisher!" publish_message(test_channel, test_message) ``` #### 订阅者示例代码 同时还需要另一个进程监听某个特定的主题或所有主题,并处理收到的信息,这就是所谓的 “订阅者”。 ```python import redis import time class Subscriber: def __init__(self, channels=[]): self.redis_client = redis.Redis() self.pubsub = self.redis_client.pubsub() # 开启一个pub/sub模式客户端 if isinstance(channels, list) and len(channels)>0: for ch in channels: self.subscribe_to(ch) def subscribe_to(self, channel_name): """Subscribe this client instance to the given channel.""" self.pubsub.subscribe(**{channel_name: self.message_handler}) @staticmethod def message_handler(message): if message['type'] != 'subscribe': print("Received:", message["data"].decode()) subscriber_instance = Subscriber(["test-channel"]) while True: try: message = subscriber_instance.pubsub.get_message(timeout=1.0) time.sleep(0.5) except KeyboardInterrupt: break finally: subscriber_instance.pubsub.close() print('Subscriber stopped.') ``` 在这个例子中我们定义了一个名为 `Subscriber` 的类用于管理对多个频道的订阅以及接收到数据后的响应逻辑;而主循环则不断检查是否有新的消息传入并打印出来直到程序终止为止。 以上就是基于Python语言实现基本的Redis Publish / Subscribe 功能的基本方式。这种架构非常适合构建事件驱动的应用场景或是分布式系统间的通讯需求等场合。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

haeasringnar

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值