redis发布订阅功能python简单实现

redis提供得发布与订阅命令
命令用例和描述
subscribesubscribe channel [channel ...]------订阅给定得一个或者多个频道
unsubscribeunsubscribe channel [channel ...]------退订给定得一个或者多个频道,不传参则退订所有频道
publishpushlish channel message------ 向给定频道发送消息

具体python代码实现

import threading
import time
import redis
import random
import json

# 由于redis在本地同是也没有设置校验等,所以这里使用 默认参数 host='localhost', port=6379
conn = redis.Redis()

# 频道名称
channel_name = '股票实时消息'


def set_change_message(n):
    """创建n条发布信息"""
    time.sleep(1)
    for i in range(n):
        data = {
            'time': time.strftime('%Y/%m/%d %M:%I:%S', time.localtime()),
            'price': random.randint(0, 999)
        }
        # 发布消息
        conn.publish(channel_name, json.dumps(data))
        time.sleep(1)


def get_change_message():
    """订阅大印消息"""
    # 创建订阅对向
    pubsub = conn.pubsub()
    # 订阅股票实时消息
    pubsub.subscribe([channel_name])
    num = 0
    for item in pubsub.listen():
        item['channel'] = item.get('channel', '').decode('utf8')
        num += 1
        if num == 3:
            # 退订所有频道,停止监听新的消息
            pubsub.unsubscribe()
        print(item)


if __name__ == '__main__':
    # 启动线程发布5条数据
    threading.Thread(target=set_change_message, args=(5,)).start()
    get_change_message()

 运行结果:

其中第一条与最后一条json数据为在订阅与退订频道时,服务端反馈客户端的消息


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小跟班大智慧

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

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

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

打赏作者

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

抵扣说明:

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

余额充值