左手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)
原文地址:https://www.cnblogs.com/hamish26/p/11353483.html