Redis订阅发布消息实例
2018-03-23 19:35
399 查看
Redis订阅和发布消息
首先,发布端启动 redis-server.exe 服务发布端 pub.py
#!/usr/bin/env python # -*- coding: utf-8 -*- ''' Created on 2015-9-9 @author: sxli ''' import redis import sys class PublishChannel(object): #kword = u"桌面".encode('gb2312') def send_pybot(self,msg): message=["msg1","msg2","msg3"] ''' msg1:对参与者端共享app进行外窗口操作 msg2:对参与者端共享app进行内窗口操作 msg3:参与者端托盘断开连接重连操作 ''' pool=redis.ConnectionPool(host='192.168.3.58',port=6379,db=0) r = redis.StrictRedis(connection_pool=pool) # input = raw_input("publish:") if msg in message: r.publish('spub', msg) if input == 'over': print '停止发布' # break; if __name__ == "__main__": Do = PublishChannel() Do.send_pybot(sys.argv[1]) print "finish msg to Channel !"
订阅端 sub.py
#!/usr/bin/env python # -*- coding: utf-8 -*- ''' Created on 2017-12-18 @author: sxli ''' import redis import win32api import os pool=redis.ConnectionPool(host='192.168.3.58',port=6379,db=0) #db=0,选择操作0号数据库 redis默认有16个数据库 conf可以配置 r = redis.StrictRedis(connection_pool=pool) p = r.pubsub() p.subscribe('spub') message=["msg1","msg2","msg3"] for item in p.listen(): print item if item['type'] == 'message': data = item['data'] # print data if data == message[0]: print u"对参与者端共享app进行外窗口操作" os.system("C:\JHAppTestAutomation\JHCoDesign-5.0\JHApp-4.0.0\bat\GotoTestCase1.bat") print u"msg1执行完成" elif data == message[1]: print u"对参与者端的共享app进行内窗口操作" #os.system("C:\\JHAppTestAutomation\\JHCoDesign-5.0\\bat\\GotoTestCase2.bat %s " % (x)) elif data == message[2]: print u"对参与者端的共享app进行内窗口操作" #os.system("C:\\JHAppTestAutomation\\JHCoDesign-5.0\\bat\\GotoTestCase2.bat %s " % (x)) elif data == message[3]: print u"注销用户!" #os.system("C:\\JHAppTestAutomation\\JHCoDesign-5.0\\bat\\GotoTestCase2.bat %s " % (x)) if item['data']=='over': break; p.unsubscribe('spub') print '取消订阅'
可通过redis-cli.exe进行测试;
cmd 打开redis-cli.exe
查看使用方法:
“redis-cli.exe” –help
连接至redis服务端:
“redis-cli.exe” -h localhost -p (默认6379)
订阅一个频道:
192.168.3.58:6379> subscribe spub
Reading messages… (press Ctrl-C to quit)
1) “subscribe”
2) “spub”
3) (integer) 1
发布一个消息:
192.168.3.58:6379> publish spub “hello!”
(integer) 1
最后跑通后测试:
订阅端:python sub.py
{‘pattern’: None, ‘type’: ‘subscribe’, ‘channel’: ‘spub’, ‘data’: 1L}
发布端 执行脚本:python pub.py msg1
订阅端:python sub.py
{‘pattern’: None, ‘type’: ‘subscribe’, ‘channel’: ‘spub’, ‘data’: 1L}
对参与者端共享app进行外窗口操作
msg1执行完成
相关连接:
https://blog.csdn.net/kwsy2008/article/details/48372079
https://blog.csdn.net/dgatiger/article/details/50436014
http://redisbook.readthedocs.io/en/latest/feature/pubsub.html
相关文章推荐
- redis消息订阅和发布实例
- redis的消息队列和发布订阅demo
- php 实现redis发布订阅消息及时通讯
- 【Redis】Java实现redis消息订阅/发布(PubSub)
- php 实现redis发布订阅消息及时通讯
- Redis消息系统——发布/订阅
- 使用redis实现消息发布订阅
- redis-高级(事务,频道发布,消息订阅,持久化,主从复制,运维监控....)
- redis-消息发布与订阅
- Redis的消息订阅与发布
- Redis基础学习--Redis 事务(watch命令)、生存时间、排序、消息通知("发布/订阅"模式)、管道、节省空间
- Redis的高级应用-事务处理、持久化、发布与订阅消息、虚拟内存使用
- 使用redis的发布订阅模式实现消息队列
- [Redis学习笔记]-Redis 发布订阅(充当消息组件)
- Redis发布及订阅消息(pub/sub)
- python操作redis进行发布和订阅消息
- redis 消息队列发布订阅模式spring boot实现
- 【Redis系列】Redis频道发布与消息订阅
- redis 消息队列 发布、订阅模式
- Redis消息的发布/订阅