• python---redis管道(事务)和发布订阅


    管道:将数据操作放在内存中,只有成功后,才会一次性全部放入redis

    #管道(事务),要是都成功则成功,失败一个全部失败
    #原理:将数据操作放在内存中,只有成功后,才会一次性全部放入redis
    pipe = r.pipeline(transaction=True)
    
    pipe.set('name','sad')
    pipe.set('age',20)
    
    pipe.execute()

    发布订阅:(回顾:查看rabbitMQ订阅者模式,这个功能更加强大)

    基础类:将订阅和发送集合到一个类中了

    import redis
    
    #将订阅和发送集合到一个类中了
    class RedisHelper:
        def __init__(self):
            self.__conn = redis.Redis(host="localhost",port=6379)#默认端口也是6379
            self.chan_sub = "fm104.5"#接收的波段
            self.chan_pub = "fm104.5"#发送的波段
    
        #发布消息
        def public(self,msg):
            self.__conn.publish(self.chan_pub,msg)
            return True
    
        #订阅消息
        def subscribe(self):
            pub = self.__conn.pubsub()
            pub.subscribe(self.chan_sub)
            pub.parse_response()
            return pub

    发布者:

    一:不使用基础类直接发布

    import redis
    
    
    r = redis.Redis(host="127.0.0.1")
    r.publish("fm104.5","dasfa")

    二:使用基础类发布

    from base import RedisHelper
    
    
    obj = RedisHelper()
    obj.public("hello")

    订阅者:

    一:不使用基础类:

    import redis
    
    
    r = redis.Redis(host="127.0.0.1")
    pub = redis.pubsub()      #定义订阅者
    pub.subscribe(fm104.5)#定义其接受频段 
    msg
    = pub.parse_response() #开始接受
    print(msg)

    二:使用基础类:

    obj = RedisHelper()
    redis_sub = obj.subscribe()
    
    while True:
        msg = redis_sub.parse_response()
        print(msg)   #[b'message', b'fm104.5', b'hello']

    继承类更加方便使用

  • 相关阅读:
    给msde加装企业管理器
    InterBase 数据库与驱动 版本不同
    delphi 演示数据路径
    TNetHTTPClient 使用
    MYSQL之库操作
    MYSQL之数据操作
    MYSQL之表操作
    MYSQL之视图、触发器、存储过程、函数、事物、数据库锁和数据库备份
    数据库三范式详解
    MYSQL之索引原理与慢查询优化
  • 原文地址:https://www.cnblogs.com/ssyfj/p/8612850.html
Copyright © 2020-2023  润新知