一.关系数据库与非关系数据库
1.关系型数据库
关系型数据库是一个结构化的数据库,创建在关系模型基础上,一般面向于记录。它借助于集合代数等数学概念和方法来处理数据库中的数据。关系模型就是指二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。现实世界中,各种实体与实体之间的各种联系都可以用关系模型来表示。SQL语句(标准数据查询语言)就是一种基于关系型数据库的语言,用于执行对关系型数据库中数据的检索和操作。
主流的关系型数据库包括Oracle、MySQL、SQLSenver、MicrosoftAccess、DB2等。
2.非关系型数据库
NoSQL(NoSQL=Not Only SQL),意思是“不仅仅是SQL”,是非关系型数据库的总称。主流的NoSQL数据库有Redis、MongBD、Hbase、CouhDB等等。以上这些非关系型数据库,他们的存储方式、存储结构以及使用的场景都是完全不同的。所以我们认为它是一个非关系型数据库的集合,而不是像关系型数据库一样,是一个统称。换言之,除了主流的关系型数据库以外的数据库,都可以认为是非关系型的。NoSQL数据库凭借着其非关系型、分布式、开源及横向扩展等优势,被认为是下一代数据库产品。
3.非关系型数据库产生背景
- High performance——对数据库高并发读写需求
- Huge Storage——对海量数据高效存储与访问需求
- High scalability && High Availability——对数据库高可扩展性与高可用性需求
二.Redis基础
1.Redis简介
Redis(RemoteDictionanyServer,远程字典型)是一个开源的、使用C语言编写的NoSQL数据库。Redis基于内存运行并支持持久化,采用key-value(键值对)的存储形式,是日前分布式架构中不可或缺的一环。
Redis服务器程序是单进程模型,也就是在一台服务器上可以同时启动多个Redis进程而Redis的实际处理速度则是完全依靠于主进程的执行效率。若在服务器上只运行一个Redis进程,当多个客户端同时访问时,服务器的处理能力是会有一定程度的下降;若在同一台服务器上开启多个Redis进程,Redis在提高并发处理能力的同时会给服务器的CPU造成很大压力。
即:在实际生产环境中,需要根据实际的需求来决定开启多少个Redis进程。若对高并发要求更高一些,可能会考虑在同一台服务器上开启多个进程。若CPU资源比较紧张,采用单进程即可 。
2.Redis优点
- 具有极高的数据读写速度,数据读取的速度最高可达到110000次/s,数据写入速度最高达到81000次/s
- 支持丰富的数据类型,如key-value类型的数据,还支持strings,lists,hashes,sets及Oedered Sets等数据类型操作。
- 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
- 原子性,Redis所有操作都是原子性的
- 支持数据备份,即master-slave模式的数据备份。
Redis作为基于内存运行的数据库,缓存是其最常应用的场景之一。除此之外Redis常见应用场景还包括获取最新N个数据的操作,排行榜类应用,计数器应用,存储关系,实时分析系统,日志记录。
3.Redis安装部署
(1)安装Redis的二进制文件
Redis的安装相对于其他服务来说比较简单。首先需要到Redis官网(https://www.redis.io)下载相应的源码软件包,然后上传至Linux系统的服务器中进行解压、安装。本章中以redis-4.0.9.tar.gz为例进行Redis服务的安装和配置讲解。
通常情况下,在Linux系统中进行源码编译安装,需要先执行./configure进行环境检查与配置,从而生成Makefile文件,再执行make&&makeinstall命令进行编译安装。而Redis源码包中直接提供了Makefile文件,所以在解压完软件包后,可直接进入解压后的软件包目录,执行make与make install命令进行安装。
tar zxvf redis-4.0.9.tar.gz
cd redis-4.0.9
make
make prefix=/usr/local/redis install
ln -s /usr/local/redis/bin/* /usr/local/bin/
(2)设置Redis服务的配置文件
make install 只是安装了二进制文件到系统中,并没有启动脚本或配置文件。在解压后的软件包中的redis版本/utils/目录下默认提供了一个install_server.sh脚本文件,通过该脚本文件可以设置Redis服务所需要的相关配置文件。当脚本运行完毕,Redis服务就已经开启,默认端口为6379。
cd redis-4.0.9/utils/
./install_server.sh
当发生停顿时可以直接回车,完毕之后会显示配置文件目录内容
备注:
Config file : /etc/redis/6379.conf //配置文件路径
Log file : /var/log/redis_6379.log //日志文件路径
Data dir : /var/lib/redis/6379 //数据文件路径
Executable : /usr/local/redis/bin/redis-server //可执行文件路径
Cli Executable : /usr/local/redis/bin/redis-cli //客户端命令行工具
(3)查看进程观察是否启动
netstat -anpt | grep redis
(4)Redis服务控制
/etc/init.d/redis_6379 stop #关闭服务
/etc/init.d/redis_6379 start #开启服务
/etc/init.d/redis_6379 restart #重启服务
/etc/init.d/redis_6379 status #查看状态
(5)配置参数的修改
修改配置参数bind可以使外部主机也可以通过Redis命令行工具redis-cli进行远程登录。
bind 127.0.0.1 redis服务器所在地址
4.Redis设置密码
(1)通过修改Redis配置文件6379.conf
找到requirepass关键字,后面就是跟的密码,默认情况下是注释掉的,即默认不需要密码,如下:
打开注释,设置为自己的密码,重启即可
(2) 通过命令设置密码
使用redis-cli连接上redis,执行如下命令:
config set requirepass 123456
执行完毕,无需重启,退出客户端,重新登录时也可以选择不输入密码,然而不输入密码则不允许进行修改操作只能查看,在登录时加 - a 密码变可以进行修改。
(3)两种设置密码的区别
1)修改配置文件设置的密码永久生效;使用命令设置的密码临时生效,重启后失效
2)修改配置文件设置的密码,需要重启生效;使用命令设置的密码,退出后再登录生效,重启后失效
3)命令的优先级高于配置文件的优先级