zoukankan      html  css  js  c++  java
  • 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']

    继承类更加方便使用

  • 相关阅读:
    3秒后页面跳转代码
    数据库 ""和null的在java 持久化中的区别
    去掉标签元素
    hibernate 自动封装
    hql 多对多查询
    javascript 数组
    spring mvc+mybatis整合
    collection映射
    mybatis中one2many
    mybatis中many2one
  • 原文地址:https://www.cnblogs.com/ssyfj/p/8612850.html
Copyright © 2011-2022 走看看