python实现Redis的订阅与发布(sub-pub机制)

8 篇文章 0 订阅

redis server-win10
下载地址:https://github.com/tporadowski/redis/releases

cd D:\TOOLS\redis服务器\Redis-x64-5.0.14
.\redis-server.exe redis.windows.conf

redis client-raspberry
下载地址:http://redis.io/download

安装python-redis库:
先激活python虚拟环境:

cd D:\05_python_virtualenv\redis\Scripts
.\activate
pip install redis

验证redis库是否安装成功:我也安装多的,虚拟环境干净的时候就安装。

python 
import redis
redistribution.VERSION

基于事件的系统中,Pub/Sub是目前广泛使用的通信模型,它采用事件作为基本的通信机制,提供大规模系统所要求的松散耦合的交互模式:订阅者(如客户端)以事件订阅的方式表达出它有兴趣接收的一个事件或一类事件;发布者(如服务器)可将订阅者感兴趣的事件随时通知相关订阅者。demo运行持续:先运行sub端(订阅者),一直监听着,再运行pub端(发布者),一旦PUB消息,马上SUB到。
Pub:

#coding:utf-8
import time
import redis

number_list = ['300033', '300032', '300031', '300030']
signal = ['1', '-1', '1', '-1']
host='127.0.0.1'
port = '6379'

rc = redis.StrictRedis(host=host, port=port, db=0)
for i in range(len(number_list)):
    value_new = str(number_list[i]) + ' ' + str(signal[i])
    print('number_list:', i)
    print('value_new:', value_new)
    rc.publish("airport", value_new)  #发布消息到airport

Sub:

#coding:utf-8
import time
import redis
host='127.0.0.1'

rc = redis.StrictRedis(host=host, port='6379', db=0)
ps = rc.pubsub()
ps.subscribe('airport')  #从liao订阅消息
for item in ps.listen():		#监听状态:有消息发布了就拿过来
    if item['type'] == 'message':
        print (item['channel'])
        print (item['data'])

一是连接方式。使用python连接redis有三种方式:
①使用库中的Redis类(或StrictRedis类,其实差不多);
②使用ConnectionPool连接池(可保持长连接);
③使用Sentinel类(如果有多个redis做集群时,程序会自己选择一个合适的连接)。
二是订阅方法。这里使用的是StrictRedis类中的pubsub方法。连接好之后,可使用subscribe或psubscribe方法来订阅redis消息。其中subscribe是订阅一个频道,psubscribe可订阅多个频道.

实际项目中,一般采集程序和入库程序是分开,使用消息中间件(redis)的订阅/发布。
server端采集程序发布消息到redis队列,入库程序从redis缓存队列中消费消息。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值