redis_py发布/订阅方法

1      Publish / Subscribe 发布/订阅

  Redis 的 SUBSCRIBE 命令可以让客户端订阅任意数量的频道,每当有新信息发送到被订阅的频道时, 信息就会被发送给所有订阅指定频道的客户端。
作为例子, 下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 —— client2 、 client5 和 client1 之间的关系:

                            当有新消息通过 PUBLISH 命令发送给频道channel1 时, 这个消息就会被发送给订阅它的三个客户端:

 上面描述了订阅与发布的关系。

2      example 实例演示

发布端:

# -*- coding: UTF-8 -*-
import redis
 
redis_client = redis.StrictRedis(host=‘localhost‘, port=6379, db=0)
 
# 建立PubSub对象订阅通道和侦听新消息
p = redis_client.pubsub()
 
# 订阅两个频道,分别是my-first-channel,和my-second-channel
p.subscribe(‘my-first-channel‘, ‘my-second-channel‘)
 
# 使用publish推送消息,注意是StrictRedis类的方法
redis_client.publish(‘my-first-channel‘, ‘nihvdfdao‘)

订阅端A:

# -*- coding: UTF-8 -*-
import redis
 
redis_server = redis.StrictRedis(host=‘localhost‘, port=6379, db=0)
 
# 建立PubSub对象订阅通道和侦听新消息
p = redis_server.pubsub()
 
# 订阅两个频道,分别是my-first-channel,和my-second-channel
p.subscribe(‘my-first-channel‘, ‘my-second-channel‘)
 
# 使用p.listen()方法监听频道
for item in p.listen():  
    # 如果订阅的频道存储的项目是‘message‘
    if item[‘type‘] == ‘message‘:  
        # 则打印这个项目
        print item[‘data‘]

订阅端B:

# -*- coding: UTF-8 -*-
import redis
 
redis_server = redis.StrictRedis(host=‘localhost‘, port=6379, db=0)
 
# 建立PubSub对象订阅通道和侦听新消息
p = redis_server.pubsub()
 
# 订阅两个频道,分别是my-first-channel,和my-second-channel
p.subscribe(‘my-first-channel‘, ‘my-second-channel‘)
 
whileTrue:
    data =msg_queue.parse_response()
    
    print pickle.loads(data[2])

本文部分内容和图片引用以下网址:

http://zc985552943.iteye.com/blog/2037535

时间: 2024-12-28 21:21:44

redis_py发布/订阅方法的相关文章

SQL SERVER2008不在同一局域网内实现订阅发布的方法

我们知道,在新建订阅的时候,必须要使用实际服务器的真实名称才可以,IP地址,别名都不可以,在同一个局域网内是没有问题的.但是两台服务器不在同一个局域网内就不行了 要想实现订阅和发布,本人用到的最简单的方法: 一:查看实际服务器的名称: 二:在发布的服务器的hosts文件里添加上要推送的订阅服务器的IP地址和名称,记得,这个名称需要和发布服务器的名称保持一致 这样,就可以对他们建立连接了: SQL SERVER2008不在同一局域网内实现订阅发布的方法,布布扣,bubuko.com

Redis发布订阅使用方法

Redis发布订阅 发布订阅模式中发布消息的为publisher即发布者,接收消息的为subscriber即订阅者.在Redis中,所有的消息通过channel即频道进行发布,一个发布者可以向多个channel发布消息,一个订阅者也可以订阅多个channel.Redis不对消息进行持久化,如果消息发布时订阅者还没有进行订阅,则不会再收到此消息. 发布订阅命令 命令 格式 说明 PUBLISH PUBLISH channel message 发布message到指定的channel SUBSCRI

Javascript异步编程方法之------“发布/订阅”

Javascript异步编程方法之------“发布/订阅”我们假定,存在一个"信号中心",某个任务执行完成,就向信号中心"发布"(publish)一个信号,其他任务可以向信号中心"订阅"(subscribe)这个信号,从而知道什么时候自己可以开始执行.这就叫做"发布/订阅模式"(publish-subscribe pattern),又称"观察者模式"(observer pattern).这个模式有多种实现

消息队列 ActiveMQ的简单了解以及点对点与发布订阅的方法实现ActiveMQ

Apache ActiveMQ是Apache软件基金会所研发的开放源代码消息中间件: 由于ActiveMQ是一个纯Java程序,因此只需要操作系统支持Java虚拟机,ActiveMQ便可执行. ActiveMQ是用来干什么的? 用来处理消息,也就是处理JMS的.消息队列在大型电子商务类网站,如京东.淘宝.去哪儿等网站有着深入的应用, 队列的主要作用是消除高并发访问高峰,加快网站的响应速度. 在不使用消息队列的情况下,用户的请求数据直接写入数据库,高发的情况下,会对数据库造成巨大的压力, 同时也使

python之上下文管理、redis的发布订阅

使用with打开文件的方式,是调用了上下文管理的功能 1 #打开文件的两种方法: 2 3 f = open('a.txt','r') 4 5 with open('a.txt','r') as f 6 7 实现使用with关闭socket 8 import contextlib 9 import socket 10 11 @contextlib.contextmanage 12 def Sock(ip,port): 13 socket = socket.socket() 14 socket.bi

RedisRepository封装—Redis发布订阅以及StackExchange.Redis中的使用

本文版权归博客园和作者本人吴双共同所有,转载请注明本Redis系列分享地址.http://www.cnblogs.com/tdws/tag/NoSql/ Redis Pub/Sub模式 基本介绍 Redis发布订阅—Pub/Sub模式或者说是观察者模式.我想大家即使没有使用过,也已经耳熟能详了. 先简单举例说明下应用场景,在场景中我们可以分析到其优势在哪. 比如你的线上应用应用,你想设置一个日志报警系统,当应用出现异常的时候,立马发送通知给你,可能是短信的形式,也可能是邮件的形式.当然如果只将报

Kafka是分布式发布-订阅消息系统

https://www.biaodianfu.com/kafka.html Kafka是分布式发布-订阅消息系统.它最初由LinkedIn公司开发,之后成为Apache项目的一部分.Kafka是一个分布式的,可划分的,冗余备份的持久性的日志服务.它主要用于处理活跃的流式数据. 在大数据系统中,常常会碰到一个问题,整个大数据是由各个子系统组成,数据需要在各个子系统中高性能,低延迟的不停流转.传统的企业消息系统并不是非常适合大规模的数据处理.为了已在同时搞定在线应用(消息)和离线应用(数据文件,日志

RabbitMQ 发布/订阅

我们会做一些改变,就是把一个消息发给多个消费者,这种模式称之为发布/订阅(类似观察者模式). 为了验证这种模式,我们准备构建一个简单的日志系统.这个系统包含两类程序,一类程序发动日志,另一类程序接收和处理日志. 在我们的日志系统中,每一个运行的接收者程序都会收到日志.然后我们实现,一个接收者将接收到的数据写到硬盘上,与此同时,另一个接收者把接收到的消息展现在屏幕上.本质上来说,就是发布的日志消息会转发给所有的接收者. 1.转发器(Exchanges) RabbitMQ消息模型的核心理念是生产者永

C# 委托和事件 与 观察者模式(发布-订阅模式)讲解 by天命

使用面向对象的思想 用c#控制台代码模拟猫抓老鼠 我们先来分析一下猫抓老鼠的过程 1.猫叫了 2.所有老鼠听到叫声,知道是哪只猫来了 3.老鼠们逃跑,边逃边喊:"xx猫来了,快跑啊!我是老鼠xxx" 一  双向耦合的代码 首先需要一个猫类Cat 一个老鼠类Rat 和一个测试类Program 老鼠类的代码如下 //老鼠类 public class Rat { public string Name { get; set; } //老鼠的名字 public Cat MyCat { get;