初识MongoDB
一、前言
1、为什么学习 MongoDB
在做商品详情开发中,会使用MongoDB来进行数据聚合缓存。
2、Redis和 MongoDB的区别
(1)内存管理机制
Redis 数据全部存在内存,定期写入磁盘,当内存不够时,可以选择指定的 LRU 算法删除数据。
MongoDB 数据存在内存,由 linux系统 mmap 实现,当内存不够时,只将热点数据放入内存,其他数据存在磁盘。
(2)支持的数据结构
Redis支持的数据结构类型较多,比如string、set、zset、list、hash、hyperloglog、geo等。
MongoDB 数据结构比较单一,但是支持丰富的数据表达,索引,最类似关系型数据库,支持的查询语言非常丰富。
(3)数据量和性能
当物理内存够用的时候,redis>mongodb>mysql
当物理内存不够用的时候,redis和mongodb都会使用虚拟内存。
注:实际上如果redis要开始虚拟内存,那很明显要么加内存条,要么你换个数据库了。
但是,mongodb不一样,只要,业务上能保证,冷热数据的读写比,使得热数据在物理内存中,mmap的交换较少。mongodb还是能够保证性能。
(4)性能
mongodb依赖内存,TPS较高;Redis依赖内存,TPS非常高。性能上Redis优于MongoDB。
(5)可靠性
mongodb从1.8版本后,采用binlog方式(MySQL同样采用该方式)支持持久化,增加可靠性;
Redis依赖快照进行持久化;AOF增强可靠性;增强可靠性的同时,影响访问性能。
可靠性上MongoDB优于Redis。
(6)数据分析
mongodb内置数据分析功能(mapreduce),而Redis不支持。
(7)事务支持情况
Redis 事务支持比较弱,只能保证事务中的每个操作连续执行;mongodb不支持事务。
(8)集群
MongoDB 集群技术比较成熟,Redis从3.0开始支持集群。
二、Linux下安装 MongoDB
注:这里采用Docker方式安装MongoDB
# 从DockerHub上拉取MongoDB镜像
docker pull mongo
# 创建容器
docker run -itd --name MongoDB-test --privileged -p 27017:27017 -v /Users/chiyongfu/MongoDB:/data/db -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=haveyb mongo
注:创建容器的同时,通过-v参数指定了共享目录,通过-p参数指定了端口映射,通过-e参数指定了MongoDB的用户名和密码
三、MongoDB的使用
1、进入创建好的容器
# 进入容器
docker exec -it MongoDB-test mongo
2、通过Navicat 连接我们的MongoDB
用户名填写我们创建容器指定的用户名admin,密码填写我们创建容器时指定的密码haveyb
保存之后,就可以看到,已经连接成功了。
剩下的操作和Navicat操作MySQL类似,比如创建数据库…