面试官:说一下Redis和MongoDB的区别?

摘要:
'foobar'})<从测试中选择*,其中name='obar'45db.test.find()<

项目中用的是MongoDB,但是为什么用其实当时选型的时候也没有太多考虑,只是认为数据量比较大,所以采用MongoDB。

最近又想起为什么用MongoDB,就查阅一下,汇总汇总:

之前也用过redis,当时是用来存储一些热数据,量也不大,但是操作很频繁。现在项目中用的是MongoDB,目前是百万级的数据,将来会有千万级、亿级。

就Redis和MongoDB来说,大家一般称之为Redis缓存、MongoDB数据库。这也是有道有理有根据的,

Redis主要把数据存储在内存中,其“缓存”的性质远大于其“数据存储“的性质,其中数据的增删改查也只是像变量操作一样简单;

MongoDB却是一个“存储数据”的系统,增删改查可以添加很多条件,就像SQL数据库一样灵活,这一点在面试的时候很受用。

Mongodb与Redis应用指标对比

MongoDB和Redis都是NoSQL,采用结构型数据存储。二者在使用场景中,存在一定的区别,这也主要由于
二者在内存映射的处理过程,持久化的处理方法不同。MongoDB建议集群部署,更多的考虑到集群方案,Redis
更偏重于进程顺序写入,虽然支持集群,也仅限于主-从模式。

面试官:说一下Redis和MongoDB的区别?第1张

MongoDB语法与现有关系型数据库SQL语法比较
 1MongoDB语法            MySql语法
 2
 3db.test.find({'name':'foobar'})             <==>          select * from test where name='foobar'
 4
 5db.test.find()                                      <==>          select *from test
 6
 7db.test.find({'ID':10}).count()             <==>          select count(*) from test where ID=10
 8
 9db.test.find().skip(10).limit(20)          <==>          select * from test limit 10,20
10
11db.test.find({'ID':{$in:[25,35,45]}})     <==>          select * from test where ID in (25,35,45)
12
13db.test.find().sort({'ID':-1})                 <==>          select * from test order by IDdesc
14
15db.test.distinct('name',{'ID':{$lt:20}}) <==>          select distinct(name) from testwhere ID<20
16
17db.test.group({key:{'name':true},cond:{'name':'foo'},reduce:function(obj,prev){prev.msum+=obj.marks;},initial:{msum:0}})     <==>     select name,sum(marks) from testgroup by name
18
19db.test.find('this.ID<20',{name:1})    <==>           select name from test whereID<20
20
21db.test.insert({'name':'foobar','age':25})    <==>       insertinto test ('name','age') values('foobar',25)
22
23db.test.remove({})                                     <==>       delete * from test
24
25db.test.remove({'age':20})                        <==>       delete test where age=20
26
27db.test.remove({'age':{$lt:20}})                <==>        delete test where age<20
28
29db.test.remove({'age':{$lte:20}})              <==>        delete test where age<=20
30
31db.test.remove({'age':{$gt:20}})              <==>         delete test where age>20
32
33db.test.remove({'age':{$gte:20}})            <==>         delete test where age>=20
34
35db.test.remove({'age':{$ne:20}})             <==>         delete test where age!=20
36
37db.test.update({'name':'foobar'},{$set:{'age':36}})<==> update test set age=36 where name='foobar'
38
39db.test.update({'name':'foobar'},{$inc:{'age':3}})<==> update test set age=age+3 where name='foobar'
40
41模糊查询:$regex
42
43db.test.find({"name":{$regex:"aaa"}})
44
45分组个数过滤
46
47db.getCollection('id_mapper').aggregate([{$group:{ _id :"$contract_id",count:{$sum:1}}},{$match:{count:{$gt:1}}}])
48
49判断是否为空
50
51db.getCollection('id_mapper').find({"sinocardid":{$in:[null]}})

面试官:说一下Redis和MongoDB的区别?第2张

免责声明:文章转载自《面试官:说一下Redis和MongoDB的区别?》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【1】Laravel5.1 安装Wayland download and compile下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

表与表之间建关系(约束)

目录 约束条件default默认值 unique唯一 primary key主键 auto_increment自增 表与表之间建关系 外键 表关系 一对多关系 多对多 一对一 修改表(了解) 复制表(了解) 约束条件 default默认值 # 补充知识点 插入数据的时候可以指定字段 create table t1( id int,...

基于jQuery美化联动下拉选择框

今天给大家介绍一款基于jQuery美化联动下拉选择框。这款下下拉选择框js里自带了全国所有城市的数数库。下拉选择框适用浏览器:IE8、360、FireFox、Chrome、Safari、Opera、傲游、搜狗、世界之窗。效果图如下: 在线预览   源码下载 实现的代码。 html代码: <div id="container">...

Flask之RESTFul API前后端分离

Flask之RESTFul API前后端分离一:虚拟环境搭建的两种方式 1 pipenv的使用 pip install --user pipenv安装pipenv在用户目录下 py -m site --user-site通过此命令找到用户基础目录,结果为C:Usersu14eAppDataRoamingPythonPython35site-packages...

【Python爬虫】存储格式化数据

我们一直使用 print 方法打印爬虫获取的数据,接下来你将把这些数据保存到特定格式文件中。 CSV 格式 Python 提供了标准库 csv 来读写 csv 数据。 新建一个 Python 文件,输入以下代码,并运行。 import csv file = open('movies.csv', 'w', newline='') csvwriter = c...

RobotFramework框架做自动化的过程中,遇到不能选择下拉框问题

1.描述 使用RobotFramework框架做自动化的过程中,遇到不能选择下拉框问题。 2.遇到的问题 关于下拉框的使用,网上都是这么使用的 select From List By Value Xpath=//* [@] vlaue # select From List By Value 关键字用于选择下拉框。 Xpath=//* [@] 定位下拉框;...

量化学习 | Tushare 基本面选股 (二)

量化投资比较重要的是策略,可是你得先选个好股,价值投资需要认同他的价值,值得投资的股票才有投资的机会,现在简单介绍一下基于基本面的选股,其实我现实生活中也有炒股,都是经验之说的选股原则。 首先从tushare中获取每日指标 pro.daily_basic last_year = '20190101' start_date = '20200313' myto...