⑦插入数据:向Redis插入一条数据,只需要先设计好key和value,然后用set命令插入数据即可。例如,在Course表中插入一门新的课程“大数据”,4学分,操作命令和结果如下图所示。

⑧删除数据: Redis有专门删除数据的命令——del命令,命令格式为“del 键”。所以,如果要删除之前新增的课程“大数据”,只需输入命令“del Course:8:Cname”,如下图所示,当输入“del Course:8:Cname”时,返回“1”,说明成功删除一条数据。

⑨查询数据:Redis最简单的查询方式是使用get命令。输入get命令查询,输出为空,说明数据删除成功。

(二)MongoDB的安装和使用。
? ?完成MongoDB的基本的shell命令。 MongoDB 是一个基于分布式文件存储的数据库,介于关系数据库和非关系数据库之间,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
①使用apt-get命令进行在线安装MongoDB,可以避免很多莫名其妙的问题。
命令行sudo apt-get install mongodb可下载安装MongoDB,默认安装的版本是MongoDB 2.6.10,但目前MongoDB已经升级到3.2.8,可以通过添加软件源的方式来安装3.2.8版本。
a.首先打开终端,导入公共key到包管理器

b.创建MongoDB的文件列表。

c.更新包管理器,安装MongoDB。


d.安装完成MongoDB以后,在终端输入以下命令查看MongoDB版本。

②MongoDB的启动和关闭。

③进入MongoDB的shell命令模式。默认连接的数据库是test数据库,在此之前一定要确保已经启动了MongoDB,否则会出现错误,启动之后运行成功情况如下。

④常用操作命令
数据库相关
show dbs:显示数据库列表
show collections:显示当前数据库中的集合(类似关系数据库中的表table)
show users:显示所有用户
use yourDB:切换当前数据库至yourDB
db.help() :显示数据库操作命令
db.yourCollection.help() :显示集合操作命令,yourCollection是集合名

MongoDB没有创建数据库的命令,如果想创建一个“School”的数据库,先运行use School命令,之后做一些操作(如:创建聚集集合db.createCollection('teacher')),这样就可以创建一个名叫“School”的数据库。

⑤以一个School数据库为例,在School数据库中创建两个集合teacher和student,并对student集合中的数据进行增删改查基本操作(集合Collection相当于关系型数据库中的表table)。
a. 切换到School数据库(切换到School数据库。MongoDB 无需预创建School数据库,在使用时会自动创建)

b. 创建Collection(创建一个聚集集合。MongoDB 其实在插入数据的时候,也会自动创建对应的集合,无需预定义集合)

c.与数据库创建类似,MongoDB插入数据时也会自动创建集合。 插入数据有两种方式:insert和save。

插入数据成功

_id相同,插入失败,不做操作。
d.添加的数据其结构是松散的,只要是json格式均可,列属性均不固定,根据添加的数据为准。先定义数据再插入,就可以一次性插入多条数据。

e. 运行完以上例子,student 已自动创建,说明 MongoDB 不需要预先定义 collection ,在第一次插入数据后,collection 会自动的创建。

⑥查找数据
a. db.student.find() 查询所有记录。相当于:select * from student

b. db.student.find({sname: 'zhangsan'}) 查询sname='zhangsan'的记录。相当于: select * from student where sname='zhangsan'

c. db.student.find({},{sname:1, sage:1}) 查询指定列sname、sage数据。相当于:select sname,sage from student。
sname:1表示返回sname列,默认_id字段也是返回的,可以添加_id:0(意为不返回_id)写成{sname: 1, sage: 1,_id:0},就不会返回默认的_id字段了

d. db.student.find({sname: 'zhangsan', sage: 22})
and与条件查询。相当于:select * from student where sname = 'zhangsan' and sage = 22

e. db.student.find({$or: [{sage: 22}, {sage: 25}]})
or条件查询。相当于:select * from student where sage = 22 or sage = 25

f. db.youCollection.find(criteria, filterDisplay) criteria:
查询条件,可选filterDisplay:筛选显示部分数据,如显示指定列数据,可选(当选择时,第一个参数不可省略,若查询条件为空,可用{}做占位符)

⑦修改数据 db.youCollection.update(criteria, objNew, upsert, multi )
criteria: update的查询条件,类似sql update查询内where后面的 objNew : update的对象和一些更新的操作符(如$set)等,也可以理解为sql update查询内set后面的。
upsert : 如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
multi: mongodb默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。默认false,只修改匹配到的第一条数据。
其中criteria和objNew是必选参数,upsert和multi可选参数。 db.student.update({sname: 'lisi'}, {$set: {sage: 30}}, false, true)
相当于:update student set sage =30 where sname = 'lisi';

⑧删除数据 db.student.remove({sname: 'chenliu'}) 相当于:delete from student where sname='chenliu'

⑨删除集合

⑩退出shell命令模式
输入exit或者Ctrl+C退出shell命令模式


(三)使用Java API对MongoDB进行访问。
①Java MongoDB Driver驱动jar包已经下保存至’/home/hadoop/下载/’目录下。

②打开Eclipse,新建Java Project。

引入驱动包mongodb-driver-3.8.0.jar。

新建Class Average_grade


清空Average_grade.java里面的代码,然后在该文件中输入完整的执行集合student的增删改查操作的代码。

程序运行结束后会在底部的“Console”面板中显示运行结果信息。

每次执行完程序,都可以返回shell模式查看结果。如:在eclipse执行完更新操作后,在shell模式输入db.student.find(),可以查看student集合的所有数据。

(四)Redis和传统的Mysql数据库的区别在哪里?
①mysql是关系型数据库,主要用于存放持久化数据,将数据存储在硬盘中,读取速度较慢。redis是NOSQL,即非关系型数据库,也是缓存数据库,即将数据存储在缓存中,缓存的读取速度快,能够大大的提高运行效率,但是保存时间有限。
②mysql作为持久化存储的关系型数据库,相对薄弱的地方在于每次请求访问数据库时,都存在着I/O操作,如果反复频繁的访问数据库。
第一:会在反复链接数据库上花费大量时间,从而导致运行效率过慢;
第二:反复的访问数据库也会导致数据库的负载过高,那么此时缓存的概念就衍生了出来。
③缓存就是数据交换的缓冲区(cache),当浏览器执行请求时,首先会对在缓存中进行查找,如果存在,就获取;否则就访问数据库。缓存的好处就是读取速度快。
④redis数据库就是一款缓存数据库,用于存储使用频繁的数据,这样减少访问数据库的次数,提高运行效率。
(五)MongoDB有哪些特点,和Mysql数据库的区别在哪里?
特点:
Mongodb是非关系型数据库(nosql),属于文档型数据库。文档是mongoDB中数据的基本单元,类似关系数据库的行,多个键值对有序地放置在一起便是文档,语法有点类似javascript面向对象的查询语言,它是一个面向集合的,模式自由的文档型数据库。
存储方式:虚拟内存+持久化。 查询语句:是独特的Mongodb的查询方式。 适合场景:事件的记录,内容管理或者博客平台等等。
架构特点:可以通过副本集,以及分片来实现高可用。
数据处理:数据是存储在硬盘上的,只不过需要经常读取的数据会被加载到内存中,将数据存储在物理内存中,从而达到高速读写。
成熟度与广泛度:新兴数据库,成熟度较低,Nosql数据库中最为接近关系型数据库,比较完善的DB之一,适用人群不断在增长。
区别:
MongoDB还有一个最大的缺点,就是它占用的空间很大,在MongoDB中频繁的进行数据增删改时,如果记录变了,例如数据大小发生了变化,这时候容易产生一些数据碎片,出现碎片引发的结果,一个是索引会出现性能问题。
MySQL与MongoDB都是开源的常用数据库,但是MySQL是传统的关系型数据库,MongoDB则是非关系型数据库,也叫文档型数据库,是一种NoSQL的数据库。它们各有各的优点,关键是看用在什么地方。所以我们所熟知的那些SQL(全称Structured Query Language)语句就不适用于MongoDB了,因为SQL语句是关系型数据库的标准语言。