「这是我参与2022首次更文挑战的第7天,活动详情查看:2022首次更文挑战」
在本文中,您能了解NoSQL是什么,NoSQL和关系型数据库的对比优缺点。掌握Redis是什么、能干什么、如何用;掌握Redis在Windows和Linux下的安装配置、五大数据类型、常用操作命令、Redis持久化、主从复制、事务控制以及用Jedis操作进行Java开发等技术点!废话不多说进入正题!!!
NoSQL简介
1. 数据库应用的演变历程
单机数据库时代、Memcached时代、读写分离时代、分表分库时代(集群)、nosql时代。
2. NoSQL数据库
NoSQL = Not Only SQL(不仅仅是SQL) ,泛指non-relational(非关系型数据库)。今天随着互联网web2.0网站的兴起,比如谷歌或Facebook每天为他们的用户收集万亿比特的数据,这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展,就是一个数据量超大。传统的SQL语句库不再适应这些应用了。NoSQL数据库是为了解决大规模数据集合多重数据种类带来的挑战,特别是超大规模数据的存储。
NoSQL数据库的一个显著特点就是去掉了关系数据库的关系型特性,数据之间一旦没有关系,使得扩展性、读写性能都大大提高。
3. 当前NoSQL的使用
NoSQL和传统的关系型数据库不是排斥和取代的关系,在一个分布式应用中往往是结合使用的。复杂的互联网应用通常都是多数据源、多数据类型,应该根据数据的使用情况和特点,存放在合适的数据库中。
4. NoSQL数据模型
传统关系型数据库: 表。
t_student、t_address、t_course
NoSql数据库: 聚合结构。
{
"student":{
"id":1001,
"name":"zhangsan",
"addresses":{"province":"beijing","city":"daxingqu","street":"liangshuihe"},
"courses":[
{
"id":01,
"name":"java"
},
{
"id":02,
"name":"mybatis"
},
{
"id":03,
"name":"spring"
}
]
}
}
Redis
5. Redis简介
Remote Dictionary Server(远程字典服务器),是一个用C语言编写的、开源的、基于内存运行并支持持久化的、高性能的NoSQL数据库.也是当前热门的NoSQL数据库之一。
6. Redis的特点
- 支持数据持久化
Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
- 支持多种数据结构
Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
- 支持数据备份
Redis支持数据的备份,即master-slave模式的数据备份。
7. Linux上安装Redis
第一步:下载redis
第二步:使用Xftp工具上传redis-5.0.2.tar.gz到linux 系统。
第三步:解压redis-5.0.2.tar.gz到/opt目录
第四步:编译redis,进入解压目录,并且执行make命令:
报错:gcc命令未找到
第五步:安装gcc。
什么是 gcc ?
gcc是GNU compiler collection的缩写,它是Linux下一个编译器集合(相当于javac ),是c或c++程序的编译器。
怎么安装gcc ?
- 方式一:在有外网的情况下,使用yum进行安装。执行命令:yum -y install gcc。
- 方式二:在没有外网的情况下,从光盘里进行安装。
1、从终端进入目录:/run/media/root/CentOS 7 x86_64/Packages
2、依次执行命令:
- rpm -ivh libmpc-1.0.1-3.el7.x86_64.rpm 回车
- rpm -ivh cpp-4.8.5-11.el7.x86_64.rpm 回车
- rpm -ivh kernel-headers-3.10.0-514.el7.x86_64.rpm 回车
- rpm -ivh glibc-headers-2.17-157.el7.x86_64.rpm 回车
- rpm -ivh glibc-devel-2.17-157.el7.x86_64.rpm回车
- rpm -ivh libgomp-4.8.5-11.el7.x86_64.rpm回车
- rpm -ivh gcc-4.8.5-11.el7.x86_64.rpm回车
3、执行gcc –v查看Linux内核版本
第六步:再次回到redis解压目录执行make命令进行编译
第七步:进行清理工作
第八步:再次执行make指令进行编译:
第九步:执行make install安装redis:
注意:在make执行之后再执行 make install,该操作则将 src下的许多可执行文件复制到/usr/local/bin 目录下,这样做可以在任意目录执行redis的软件的命令(例如启动,停止,客户端连接服务器等), make install 可以不用执行,看个人习惯。
查看make编译结果,cd src目录
第十步:启动Redis
启动方式:
① 前台启动 redis-server
②后台启动 redis-server &
③根据配置文件启动 启动命令 配置文件 &
注意:如果修改了redis的配置文件redis.conf,必须在启动时指定配置文件,否则修改无效!
第十一步:关闭Redis服务
关闭方式:
①使用redis客户端关闭,向服务器发出关闭命令
任意目录下执行 指令redis-cli shutdown
推荐使用这种方式, redis先完成数据操作,然后再关闭。
例如:
②kill pid 或者 kill -9 pid
这种不会考虑当前应用是否有数据正在执行操作,直接就关闭应用。
先使用 ps -ef | grep redis 查出进程号,在使用 kill pid
8. Redis客户端
Redis客户端是一个程序,通过网络连接到Redis服务器,从而实现跟 Redis服务器的交互。
Redis客户端发送命令,同时显示Redis服务器的处理结果。
redis-cli(Redis Command Line Interface)是Redis自带的基于命令行的Redis客户端,用于与服务端交互,我们可以使用该客户端来执行redis的各种命令。
1. 启动Redis客户端:
1) 直接连接redis (默认ip127.0.0.1,端口6379):redis-cli
在任意目录执行 redis-cli
此命令是连接本机127.0.0.1 ,端口6379的redis
2) 指定IP和端口连接redis:redis-cli –h 127.0.0.1 -p 6379
-h redis主机IP(可以指定任意的redis服务器)
-p端口号(不同的端口表示不同的redis应用)
在任意目录下执行 redis-cli -h 127.0.0.1 -p 6379
2. 退出Redis客户端:exit或者quit指令。
9. Redis基本知识
1) 测试Redis性能
2) Redis沟通命令,查看状态
redis >ping 返回PONG
解释:输入ping,redis给我们返回PONG,表示redis服务运行正常
3) 查看redis服务器的统计信息:info
语法:info
作用:以一种易于解释且易于阅读的格式,返回关于 Redis 服务器的各种信息和统计数值。section 用来返回指定部分的统计信息。 section的值:server , clients ,memory等等。不加section 返回全部统计信息
返回值:指定section的统计信息或全部信息
例1:统计server的信息
例2:统计全部信息
4) redis默认使用16个库
Redis默认使用16个库,从0到15。 对数据库个数的修改,在redis.conf文件中databases 16,理论上可以配置无限多个。
Redis的库和关系型数据库中的数据库实例类似,但又有一些不同,比如redis中各个库不能自定义命名,只能用序号表示,redis中各个库不是完全独立的,使用时最好一个应用使用一个redis实例,不建议一个redis实例中保存多个应用的数据。Redis实例本身所占存储空间其实是非常小的,因此不会造成存储空间的浪费。
5) 切换库命令:select db
默认使用第0个,如果要使用其他数据库,命令是 select index
6) 查看当前数据库中key的数目:dbsize
语法:dbsize
作用:返回当前数据库的 key 的数量。
返回值:数字,key的数量
7) 查看当前数据库中有哪些key:keys
8) 清空当前库:flushdb
9) 清空所有数据库:flushall
这也体现出redis中的库并不是完全无关的。
10) config get * 获得redis的所有配置值
- 语法:config get parameter
- 作用:获取运行中Redis服务器的配置参数, 获取全部配置可以使用*。参数信息来自redis.conf 文件的内容。
例1:获取数据库个数 config get databases
例2:获取端口号config get port