第二章,了解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. CNN之池化层tf.nn.max_pool | tf.nn.avg_pool | tf.reduce_mean | padding的规则解释

    摘要:池化层的主要目的是降维,通过滤波器映射区域内取最大值.平均值等操作. 均值池化:tf.nn.avg_pool(input,ksize,strides,padding) 最大池化:tf.nn.ma ...

  2. ubuntu下可用的串口调试工具--cutecom

    今天在ubuntu下要用到串口发送16进制数据,百度了很多工具,觉得minicom和cutecom都不错,比较直观是cutecom,所以就介绍下cutecom. 安装: 输入 $ sudo apt-g ...

  3. mybatis配置mapper.xml 的基本操作

    XML 映射文件 本文参考mybatis中文官网进行学习总结:http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.html MyBatis 的真正强大在于它的 ...

  4. (三)Schema与数据类型优化

    1.Schema schema,中文叫模式,是数据库的组织和结构 2.选择优化的数据类型 更小的通常更好:尽量使用可以正确存储数据的最小数据类型 简单就好:简单数据类型的操作通常需要更少的cpu周期. ...

  5. P4390 [BOI2007]Mokia 摩基亚

    传送门 对于一个询问 $(xa,ya),(xb,yb)$,拆成 $4$ 个询问并容斥一下 具体就是把询问变成求小于等于 $xb,yb$ 的点数,减去小于等于 $xa-1,yb$ 和小于等于 $xb,y ...

  6. 如何优雅的实现DML批量操作

    如何优雅的实现DML批量操作(转载) 昨天处理了一个业务同学的数据需求,简单来说就是对一张大表做一下数据清理,数据量在8千万左右,需要保留近一个月的数据,大概是400万左右. 对于数据的删除处理,尤其 ...

  7. Newtonsoft.Json 转Json字符串为空不序列化

    原文:Newtonsoft.Json 转Json字符串为空不序列化 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://bl ...

  8. docker镜像源设置

    由于docker默认镜像源为国外官方源,下载速度较慢.设置国内镜像源可加速 修改文件 /etc/docker/daemon.json vi /etc/docker/daemon.json 添加以下内容 ...

  9. smbd - 向客户提供SMB/CIFS服务的服务器

    总览 SYNOPSIS smbd [-D] [-F] [-S] [-i] [-h] [-V] [-b] [-d <debug level>] [-l <log directory&g ...

  10. NVIDIA Jetson TK1 开发板

    TEGRA K1 — 全球的移动处理器 创新的全新 Tegra K1 处理器包含 NVIDIA Kepler™ 架构 GPU,与全球强超级计算机和 PC 游戏系统所采用的 GPU 无异.这种 GPU ...