• python多进程并发redis


    Redis支持两种持久化方式RDB和AOF,RDB持久化能够快速的储存和回复数据,但在服务器停机时会丢失大量数据,AOF持久化能够高效的提高数据的安全性,但在储存和恢复数据方面要耗费大量的时间,最好的方式是使用RDB-AOF混合持久化。

    Redis默认RDB持久化,4.0以上支持混合持久化,首先设置AOF持久化,修改配置文件redis.conf中appendonly yes,然后设置混合持久化aof-use-rdb-preamble yes。

     

    这里主要说明redis多进程存储,获取对象的三种方式。

    • set、get机制:

    数据存储方式{key:value},AOF持久化能够保证很高的可靠性。

    • 连接redis:
    1 #pool管理对一个redis server的所有连接避免每次建立、释放连接的开销
    2 pool = redis.ConnectionPool(host='127.0.0.1', port=6379, db=0)
    3 r = redis.StrictRedis(connection_pool=pool)
    • 进程1/2/3…:发布对象
    1 r.set(key, pickle.dumps(mem))          
    • 进程N:获取对象
    1 value = r.get(key)
    2 value = pickle.loads(value)
    • redis delete数据
    1 r.delete(key)
    • pub/sub机制:

    程序启动就一直sub,通过监听listen()得到数据来获取对象,类似Queue,系统宕机或应用程序重启都不能保存住数据

    • 连接redis:
    1 pool = redis.ConnectionPool(host='127.0.0.1', port=6379, db=0)
    2 r = redis.StrictRedis(connection_pool=pool)
    3 ps = r.pubsub()
    4 for channel in channels:
    5     ps.subscribe(channel)    #一个channel对应一个进程
    • 进程1/2/3…:发布对象
    1 r.publish(mem.topic, pickle.dumps(mem))
    • 进程N: 获取对象
    1 limit=10
    2 rows=[]
    3 for item in ps.listen():    #获得listen得到generator
    4     if item['type'] == 'message':
    5         message = pickle.loads(item['data'])
    6         rows.append(message )
    7         if len(rows) == limit: #每10个退出,再次运行程序获取第11个对象
    8             break

    这里的缺点就是数据取出后就丢失了,redis不会保存subscribe成功后的数据。

    • push/pop机制:

        一个name存储到一个队列中, push只管发布,不管对方是否需要都存储,只要没有pop都会永久保存在redis中,当对方需要时根据name从相应的队列pop出来,pop成功后不再保存,感觉这个是比较好用!!!

        拟采用lpush()和brpop()实现,pop可以从左边pop,也可以从右边pop,这里采用rpop,根据是否自动创建name,python支持lpush和lpushx。

     

     

     

  • 相关阅读:
    深入浅出WPF-08.Event( 事件)01
    深入浅出WPF-07.Property(属性)
    深入浅出WPF-06.Binding(绑定)03
    深入浅出WPF-06.Binding(绑定)02
    深入浅出WPF-06.Binding(绑定)01
    常用快递电子面单账户申请详解(顺丰、中通、圆通、申通、百世、韵达)
    快递鸟电子面单批量打印以及模板设置
    快递公司电子面单怎么申请充值单号(中通、圆通、申通、韵达、百世)
    不限量的快递鸟单号查询接口-JAVA对接方法
    快递单号识别查询api接口调用对接demo
  • 原文地址:https://www.cnblogs.com/xiating/p/8252866.html
Copyright © 2020-2023  润新知