左手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)
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的更多相关文章
- 左手Mongodb右手Redis 第一章,进入Mongodb和Redis的世界
---恢复内容开始--- 1,为什么要使用非关系型数据库,关系型数据库咋滴,不能用嘛? 存在即合理,非关系型数据库的出现,那说明关系型数据库不适用了. 非关系型数据库(NOSQL)-->Not ...
- 左手Mongodb右手Redis redis操作
set key value 设置key的值 get key 取得key的值 decr key 值会减一 incr key 值会加一 decrby key value ,会让key的值减少value. ...
- 左手Mongodb右手Redis 通过python连接mongodb
首先需要安装第三方包pymongo pip install pymongodb """ 通过python连接mongodb数据库 首先需要初始化数据库连接 "& ...
- 左手Mongodb右手Redis 第三章mongdb操作
mongodb查询操作 1.查询操作 db.getCollection('example_data_1').find({}) 查询所有的信息,相当于mysql中的select * from tabl ...
- [原]分享一下我和MongoDB与Redis那些事
缘起:来自于我在近期一个项目上遇到的问题,在Segmentfault上发表了提问 知识背景: 对不是很熟悉MongoDB和Redis的同学做一下介绍. 1.MongoDB数组查询:MongoDB自带L ...
- MySQL、MongoDB、Redis数据库Docker镜像制作
MySQL.MongoDB.Redis数据库Docker镜像制作 在多台主机上进行数据库部署时,如果使用传统的MySQL的交互式的安装方式将会重复很多遍.如果做成镜像,那么我们只需要make once ...
- Linux系统安装NoSQL(MongoDB和Redis)步骤及问题解决办法
➠更多技术干货请戳:听云博客 如下是我工作中的记录,介绍的是linux系统下NoSQL:MongoDB和Redis的安装过程和遇到的问题以及解决办法: 需要的朋友可以按照如下步骤进行安装,可以快速安装 ...
- Mongodb 和Redis 的相同点和不同点
MongoDB和Redis都是NoSQL,采用结构型数据存储.二者在使用场景中,存在一定的区别,这也主要由于二者在内存映射的处理过程,持久化的处理方法不同.MongoDB建议集群部署,更多的考虑到集群 ...
- MongoDB与Redis的比较
MongoDB和Redis都是NoSQL,采用结构型数据存储.二者在使用场景中,存在一定的区别,这也主要由于二者在内存映射的处理过程,持久化的处理方法不同. MongoDB建议集群部署,更多的考虑到集 ...
随机推荐
- untiy3D-初学NGUI遇到问题
1,如果需要能在场景中右键添加NGUI的控件,我们需要做好下图两个框住的地方 第一个框可以使用键盘的W选中,或者鼠标点击 第二个框我们选中UIRoot然后保持它的脚本文件为打开状态,才可以使用右键添加 ...
- SecureCRT远程ssh linux服务器,利用X11本地图形化wireshark抓包,
平时学习抓包,使用wireshark很方便,直接图形化界面抓包,近期项目中遇到了需要通过SecureCRT ssh到linux服务器上面,还要在抓包, 1.简单使用网络数据包截获分析工具tcpdump ...
- 1. ZooKeeper简介
1. ZooKeeper是什么 ZooKeeper致力于提供一个高性能.高可用,且具备严格的顺序访问控制能力的分布式协调服务,是雅虎公司创建,是Google的Chubby一个开源的实现,也是Hadoo ...
- JavaScript —— 正则表达式元字符
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...
- jieba库的使用
jieba库的使用 jeiba库是一款很优秀的用于中文分词的第三方库,它通过一个汉词词典来确定汉字之间的关联概率,将概率较大的组成分词. 精准模式 把文本精准的分割开来,不存在冗余单词. jieba. ...
- Linux双网卡绑定bond详解
参考资料: 1.https://blog.csdn.net/shengerjianku/article/details/79221886
- Python网络编程:Linux epoll
原文地址:http://scotdoyle.com/python-epoll-howto.html 介绍 Python已于2.6版本添加访问Linux epoll库的API.这篇教程使用Python ...
- ltp-ddt eth_iperf_tcp iperf dualtest遇到的问题
ltp-ddt eth_iperf_tcp server端:iperf -s -i 5 -w 1M client端将ddt的核心代码抠出来: iperf -c 1921.68.40.41 -m -M ...
- springboot使用异步查询数据
主要适用于需要查询多种类型的数据,而且二者的参数没有关联的情况. 1.开启异步调用注解 2.创建抽象类,定义相关方法 /** * @author:YZH * time: 2019/8/8 12:16 ...
- ubuntu root用户 phpstorm软件不能使用中文输入法
一. 在 ~/.bashrc 里面加入 export GTK_IM_MODULE=fcitx export QT_IM_MODULE=fcitx export XMODIFIERS="@im ...