左手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)
每天进步一点