zoukankan      html  css  js  c++  java
  • python中使用redis发布订阅者模型

    redis发布订阅者模型:

      Redis提供了发布订阅功能,可以用于消息的传输,Redis的发布订阅机制包括三个部分,发布者,订阅者和Channel。发布者和订阅者都是Redis客户端,Channel则为Redis服务器端,发布者将消息发送到某个的频道,订阅了这个频道的订阅者就能接收到这条消息。Redis的这种发布订阅机制与基于主题的发布订阅类似,Channel相当于主题。

                

    发布者:

      pub.py

    import redis
    
    conn = redis.Redis(host="127.0.0.1", port=6379, decode_responses=True)
    
    
    conn.publish("333", "18")

    订阅者:

      sub.py

    import redis
    
    conn = redis.Redis(host="127.0.0.1", port=6379, decode_responses=True)
    
    # 第一步 生成一个订阅者对象
    pubsub = conn.pubsub()
    
    # 第二步 订阅一个消息
    
    pubsub.subscribe("gaoxin333")
    
    # 创建一个接收
    
    while True:
        print("working~~~")
        msg = pubsub.parse_response()
        print(msg)

    (1)发送消息 
    Redis采用PUBLISH命令发送消息,其返回值为接收到该消息的订阅者的数量。

    (2)订阅某个频道 

    Redis采用SUBSCRIBE命令订阅某个频道,其返回值包括客户端订阅的频道,目前已订阅的频道数量,以及接收到的消息,其中subscribe表示已经成功订阅了某个频道。

    (3)模式匹配 

    模式匹配功能允许客户端订阅符合某个模式的频道,Redis采用PSUBSCRIBE订阅符合某个模式所有频道,用“”表示模式,“”可以被任意值代替。假设客户端同时订阅了某种模式和符合该模式的某个频道,那么发送给这个频道的消息将被客户端接收到两次,只不过这两条消息的类型不同,一个是message类型,一个是pmessage类型,但其内容相同。 

    (4)取消订阅 
    Redis采用UNSUBSCRIBE和PUNSUBSCRIBE命令取消订阅,其返回值与订阅类似。 
    由于Redis的订阅操作是阻塞式的,因此一旦客户端订阅了某个频道或模式,就将会一直处于订阅状态直到退出。在SUBSCRIBE,PSUBSCRIBE,UNSUBSCRIBE和PUNSUBSCRIBE命令中,其返回值都包含了该客户端当前订阅的频道和模式的数量,当这个数量变为0时,该客户端会自动退出订阅状态。

    import redis
    conn = redis.Redis(host="127.0.0.1", port=6379, decode_responses=True)

    conn.publish("gaoxin333", "18")

  • 相关阅读:
    WF4.0 Beta1 自定义跟踪
    WF4.0 Beta1 流程设计器与Activity Designer
    新版本工作流平台的 (二) 权限算法(组织结构部分)
    WF4.0 Beta1 WorkflowInvoker
    WF4.0 基础篇 (十) Collection 集合操作
    WF4.0 基础篇 (十五) TransactionScope 事物容器
    WF4.0 基础篇 (六) 数据的传递 Arguments 参数
    WF4B1 的Procedural Activity 之InvokeMethod , InvokeMethod<T> 使用
    WF4.0 Beta1 异常处理
    WF4.0 Beta1 变量 Variables
  • 原文地址:https://www.cnblogs.com/zivli/p/10533432.html
Copyright © 2011-2022 走看看