两天机器做,host要写订阅主机的ip,客户端发消息,服务端订阅消息

cat redis_connector.py

#!/usr/bin/env python
__author__ = 'Q.Li'
import redis
r = redis.Redis(host='localhost',port=6379,db=0)

#r['YourKey'] = 'YourValue'

cat monitor_server.py

import redis_connector as redis

import pickle

channel = 'monitor_queue'

msg_queue = redis.r.pubsub()

msg_queue.subscribe(channel)

msg_queue.parse_response()

count = 0

while True:

  date = msg_queue.parse_response()

  print  'round %s :: ' % count,pickle.loads(data[2])

  count +=1

一、A:主机操作

1.首先运行redis-server服务

root@ubuntu:/usr/local/src/redis-2.8.17/src# ./redis-server

2.运行redis-cli

root@ubuntu:/usr/local/src/redis-2.8.17/src# ./redis-cli

127.0.0.1:6379>

3.制定订阅频道号,设定为chan_107

127.0.0.1:6379> help SUBSCRIBE       #订阅使用方法,可以订阅多个频道

SUBSCRIBE channel [channel ...]
summary: Listen for messages published to the given channels
since: 2.0.0
group: pubsub

127.0.0.1:6379> SUBSCRIBE chan_107
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "chan_107"
3) (integer) 1

这样就一直等待接受消息...

B:主机

1.运行python编译器

root@liqian-python:/pythonShare/monitor/m_server/core# python
Python 2.7.10 (default, Oct 14 2015, 16:09:02)
[GCC 5.2.1 20151010] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

>>> import redis_connector as redis,tab

>>> redis.r.publish('chan_107','hello,ubuntu')
1L
>>>

1L就发送成功,chan_107为订阅频道,hello,ubuntu为发送字符

A:主机

1.自动接受消息

1) "message"
2) "chan_107"
3) "hello,ubuntu"

二、循环接受消息,按照上面的案列来实现

在同一台B机器上做的操作

1.再打开一个B终端,进入python交互器,

root@liqian-python:/pythonShare/monitor/m_server/core# python
Python 2.7.10 (default, Oct 14 2015, 16:09:02)
[GCC 5.2.1 20151010] on linux2
Type "help", "copyright", "credits" or "license" for more information.

>>> import redis_connector as redis

>>> msg_q = redis_connector.r.pubsub()

>>> msg_q.subscribe('chan_107')

>>> msg_q.parse_response() #接受消息,

['subscribe', 'chan_107', 1L]

>>> msg_q.parse_response() #需要手动来查看消息,每次执行都查收消息,如果没有消息就会阻塞,会一直等消息。
['message', 'chan_107', 'Hello,world']

pythonRedis 订阅功能实现的更多相关文章

  1. Jedis实现发布订阅功能

    Redis为我们提供了publish/subscribe(发布/订阅)功能.我们可以对某个channel(频道)进行subscribe(订阅),当有人在这个channel上publish(发布)消息时 ...

  2. 【springboot】【redis】springboot+redis实现发布订阅功能,实现redis的消息队列的功能

    springboot+redis实现发布订阅功能,实现redis的消息队列的功能 参考:https://www.cnblogs.com/cx987514451/p/9529611.html 思考一个问 ...

  3. 在自己的网站上使用RSS订阅功能

    要增加RSS订阅功能其实很简单 就是填写一个规定好的xml文档,按照要求填好就可以实现 具体的步骤如下: 这是在网上查到的RSSxml文档 <?xml version="1.0&quo ...

  4. python开发-实现redis中的发布订阅功能

    Python3学习(二十七):python实现Redis的订阅与发布(sub-pub机制) 先介绍一下redis的pub/sub功能: Pub/Sub功能(means Publish, Subscri ...

  5. Spring Boot 2.x基础教程:使用Redis的发布订阅功能

    通过前面一篇集中式缓存的使用教程,我们已经了解了Redis的核心功能:作为K.V存储的高性能缓存. 接下来我们会分几篇来继续讲讲Redis的一些其他强大用法!如果你对此感兴趣,一定要关注收藏我哦! 发 ...

  6. SQL Server发布订阅功能研究

    前提: 发布订阅只能是同一个内网的机器上才能使用,其实这个可以用配置管理器的别名功能设置之后就可以了,外网的也能通过这样的方式来搞. 配置过程参考老D的文章:http://www.cnblogs.co ...

  7. 关于SQL SERVER 2008 R2发布订阅功能

    实现功能:主服务器维护数据的变更,从服务器需要时同步主服务器的数据. 配置:主从服务器均为SQL SERVER 2008 R2. 实现方法: 预备: 1.主从服务器需建立同一账户名及密码的账户(当时我 ...

  8. 使用python来搞定redis的订阅功能

    好久没写博客了.   最近公司开了新项目,我负责的内容之一是系统的后端.具体项目内容我就不介绍了,但是用到的技术有些还是很有趣的,值得记录一下.今天介绍的就是其中一个:利用redis的pubsub订阅 ...

  9. guava的事件发布订阅功能

    事件的重要性,不用说很重要,在很多时候我们做完一个操作的时候,需要告知另外一个对象让他执行相应操作,比如当用户注册成功的时候,需要抛出一个注册成功的事件,那么有监听器捕获到这个事件,完成后续用户信息初 ...

随机推荐

  1. MapXtreme 随笔记录1

    最近在用MapXtreme做项目,随笔记录备忘. 声明:PubMapPara 静态类,后缀为静态类成员变量 1.加载地图 /// <summary> /// 地图工作空间文件路径 /// ...

  2. [置顶] Objective-C编程之道iOS设计模式单例解析(2)

    上一篇文章,提到了单例子类化的问题.正好最近,我在Stack Overflow看见一位国外高人,也谈及了单例子类化的一些内容.思考之后,总结了一些内容.其大意是利用NSDirectory存储不同子类的 ...

  3. Haskell 笔记(四)函数系统

    函数系统 函数式编程当然少不了函数系统啦,在教程最初的时候就有一个最简单的函数,函数系统贯穿在Haskell全部,Haskell的函数有几个重要的性质. 首先声明一下函数的参数和返回值类型 然后有一个 ...

  4. c/c++性能优化--I/O优化(上)

    这节本想直接介绍I/O优化的,后来思考一下有必要对常用的I/O操作函数的特点介绍一下,这样要好些.下面就先介绍和I/O有关的库函数(以C99为准) 不同的操作系统有不同的文件管理方式,现行的主要有FA ...

  5. Linux IO控制命令生成

    在驱动程序里, ioctl() 函数上传送的变量 cmd 是应用程序用于区别设备驱动程序请求处理内容的值.cmd除了可区别数字外,还包含有助于处理的几种相应信息. cmd的大小为 32位,共分 4 个 ...

  6. String与string的区别(注意大小写)

    在C#编程过程中经常见到string和String,下面来看看它们之间的区别: 1. string是C#中的类, String是.net Framework的类. string是String的别名,S ...

  7. SQL注入(三)

    邮给我一个密码 我们意识到虽然不能添加一条新的记录在members表中,但我们可以通过修改一个存在的记录, 这也获得了我们的证明是可行的. 从先前的步骤中,我们知道bob@example.com在系统 ...

  8. 在使用cognos时遇到的问题记录帖

    在使用cognos时遇到的问题记录帖 1.开一个project 报无法访问位于 URL 的服务: http://localhost:80/ibmcognos/cgi-bin/cognos.cgi?b_ ...

  9. iOS 让UIButton根据文字内容自动计算宽高

    Xcode自带的UIButton控件是没有办法根据文字内容计算自身的宽和高的,下面演示一下问题, 我用代码方式创建一个UIButton,并且设置了一些属性,下面看一下效果图 一切都是这么的美好,跟我们 ...

  10. Python 的基本使用说明

    1.先定义一个被调用的模块,文件名 cnf.py #!/usr/bin/ #coding=utf- import sys reload(sys) sys.setdefaultencoding( &qu ...