zoukankan      html  css  js  c++  java
  • 左手Mongodb右手Redis

    第二章,了解Mongodb保存数据

      Mongodb对于每次插入的数据没有要求,字段可以随便变动,字段类型可以随意变动。

    Mongodb可以并发插入上万条文档,这是传统关系型数据库不能望其项背的。

    1.从队列Queue到Redis

      在某些场景下,使用队列可以提高程序的运行性能,但是如何选择合适的队列也需要仔细考虑。

    2.了解“生产者、消费者”模式

      厨师是生产者,负责生产,顾客是消费者,负责消费。厨师和顾客各做各的事,传菜窗口就是队列,它把生产者与消费者联系在一起。

    3实例、使用python实现队列。

    使用python自带queue对象实现队列:

    1,使用python实现一个简单生产者,消费者模型

    2,使用python的queue对象做消息队列。

    在python使用多线程实现生产者与消费者的程序中,可以使用再带的queue对象作为消费者和生产者的沟通的队列。

     在代码中,生产者负责产生两个数字,消费者负责把两个数字相加。

    producer生产者
    import random
    import time
    import redis
    import json
    
    from threading import Thread
    
    
    class Producer(Thread):
        def __init__(self):
            super().__init__()  # 调用Thread的初始化对象
            self.queue = redis.Redis()
    
        def run(self):
            while True:
                a = random.randint(0, 10)
                b = random.randint(0, 10)
                print(f"生产者生产了两个数字:{a},{b}")
                self.queue.rpush('producer',json.dumps((a,b)))
                time.sleep(2)
    
    
    producer = Producer()
    producer.start()
    while True:
        time.sleep(1)
    

      

     1 consumer消费者
     2 import random
     3 import time
     4 import redis
     5 import json
     6 
     7 from threading import Thread
     8 
     9 
    10 class Consumer(Thread):
    11     def __init__(self):
    12         super().__init__()  # 调用Thread的初始化对象
    13         self.queue = redis.Redis()
    14 
    15     def run(self):
    16         while True:
    17             name_tuple = self.queue.blpop('producer')
    18             a,b =json.loads(name_tuple[1].decode())
    19             print(f"消费者消费了一组数,{a}+{b}={a+b}")
    20             time.sleep(random.randint(0, 10))
    21 
    22 
    23 consumer = Consumer()
    24 consumer.start()
    25 while True:
    26     time.sleep(1)
  • 相关阅读:
    Centos7安装vsftpd
    Centos7安装FTP突然无法登录
    关于limit_req和limit_conn的区别
    linux nginx大量TIME_WAIT的解决办法--转
    discuz过滤词语无效
    XMReport相关视频资料
    XMReport富文本编辑器上线啦!!! 小小莫_6ada
    mysql/mybatis insertBatch插入速度太慢了
    TCP学习笔记
    Apache Derby ij下面连接Embedded数据库
  • 原文地址:https://www.cnblogs.com/hamish26/p/11353483.html
Copyright © 2011-2022 走看看