第二章,了解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)

  

 consumer消费者
import random
import time
import redis
import json from threading import Thread class Consumer(Thread):
def __init__(self):
super().__init__() # 调用Thread的初始化对象
self.queue = redis.Redis() def run(self):
while True:
name_tuple = self.queue.blpop('producer')
a,b =json.loads(name_tuple[1].decode())
print(f"消费者消费了一组数,{a}+{b}={a+b}")
time.sleep(random.randint(0, 10)) consumer = Consumer()
consumer.start()
while True:
time.sleep(1)

左手Mongodb右手Redis的更多相关文章

  1. 左手Mongodb右手Redis 第一章,进入Mongodb和Redis的世界

    ---恢复内容开始--- 1,为什么要使用非关系型数据库,关系型数据库咋滴,不能用嘛? 存在即合理,非关系型数据库的出现,那说明关系型数据库不适用了. 非关系型数据库(NOSQL)-->Not ...

  2. 左手Mongodb右手Redis redis操作

    set key value  设置key的值 get key 取得key的值 decr key 值会减一 incr key 值会加一 decrby key value ,会让key的值减少value. ...

  3. 左手Mongodb右手Redis 通过python连接mongodb

    首先需要安装第三方包pymongo pip install pymongodb """ 通过python连接mongodb数据库 首先需要初始化数据库连接 "& ...

  4. 左手Mongodb右手Redis 第三章mongdb操作

    mongodb查询操作 1.查询操作 db.getCollection('example_data_1').find({})  查询所有的信息,相当于mysql中的select * from tabl ...

  5. [原]分享一下我和MongoDB与Redis那些事

    缘起:来自于我在近期一个项目上遇到的问题,在Segmentfault上发表了提问 知识背景: 对不是很熟悉MongoDB和Redis的同学做一下介绍. 1.MongoDB数组查询:MongoDB自带L ...

  6. MySQL、MongoDB、Redis数据库Docker镜像制作

    MySQL.MongoDB.Redis数据库Docker镜像制作 在多台主机上进行数据库部署时,如果使用传统的MySQL的交互式的安装方式将会重复很多遍.如果做成镜像,那么我们只需要make once ...

  7. Linux系统安装NoSQL(MongoDB和Redis)步骤及问题解决办法

    ➠更多技术干货请戳:听云博客 如下是我工作中的记录,介绍的是linux系统下NoSQL:MongoDB和Redis的安装过程和遇到的问题以及解决办法: 需要的朋友可以按照如下步骤进行安装,可以快速安装 ...

  8. Mongodb 和Redis 的相同点和不同点

    MongoDB和Redis都是NoSQL,采用结构型数据存储.二者在使用场景中,存在一定的区别,这也主要由于二者在内存映射的处理过程,持久化的处理方法不同.MongoDB建议集群部署,更多的考虑到集群 ...

  9. MongoDB与Redis的比较

    MongoDB和Redis都是NoSQL,采用结构型数据存储.二者在使用场景中,存在一定的区别,这也主要由于二者在内存映射的处理过程,持久化的处理方法不同. MongoDB建议集群部署,更多的考虑到集 ...

随机推荐

  1. 编程语言-Python-GUI

    PyQt5 import sys from PyQt5 import QtWidgets,QtCore app = QtWidgets.QApplication(sys.argv) widget = ...

  2. tp增删改查

    增: 向数据库增加新的数据,这里增是纯粹的增添数据,如果新增的数据包含主键,并且该主键已经在数据库存在,则无法新增数据的. //M("User") 用于高效实例化一个数据模型(M ...

  3. meta标签viewport的深入理解(转)

    移动前端开发之viewport的深入理解 在移动设备上进行网页的重构或开发,首先得搞明白的就是移动设备上的viewport了,只有明白了viewport的概念以及弄清楚了跟viewport有关的met ...

  4. luoguP3384 [模板]树链剖分

    luogu P3384 [模板]树链剖分 题目 #include<iostream> #include<cstdlib> #include<cstdio> #inc ...

  5. 在Eclipse的kepler中执行OSGIproject出错的解决方式

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/canlets/article/details/29620301 今天学习OSGI的过程中依照书上所述 ...

  6. 2019-9-2-win10-UWP-MvvmLight入门

    title author date CreateTime categories win10 UWP MvvmLight入门 lindexi 2019-09-02 12:57:38 +0800 2018 ...

  7. 【学术篇】bzoj2440 [中山市选2011]完全平方数

    -题目の传送门- 题目大意: 找到第k个无平方因子数. 看到数据范围很大, 我们要采用比\(O(n)\)还要小的做法. 考虑如果前\(x\)个数中有\(k-1\)个无平方因子数, 而前\(x+1\)个 ...

  8. 日期格式化:SimpleDateFormat【线程不安全】、FastDateFormat和Joda-Time【后两个都是线程安全】

    SimpleDateFormat是线程不安全的,不能多个线程公用.而FastDateFormat和Joda-Time都是线程安全的,可以放心使用. SimpleDateFormat是JDK提供的,不需 ...

  9. linux下的软链接与硬链接

    在 Linux 底下的连结档有两种,一种是类似 Windows 的快捷方式功能的文件,可以让你快速的链接到目标文件(或目录);这种链接称为软链接. 另一种则是透过文件系统的 inode 连结来产生新档 ...

  10. 【抓包工具之Fiddler】中session的请求/响应类型与图标对照表