关系型数据库支持原子性、一致性、隔离性、持久性四大特性,非关系数据库不支持这四大特性。
非关系数据库相对于关系型数据库的优势:
关系型数据库为了降低数据冗余,保证数据约束性,在数据查询时不得不使用多个数据表之间的连接操作,但是这极大的降低了查询效率,不能满足当下网络应用的高并发要求,而与此同时非关系型数据库在对并发的大规模访问有着非常高的效率优势,因此非关系数据库在高并发的具体应用场景下得到了非常迅猛的发展。Key-value存储是Redis的主要特点之一。现如今我们说的非关系型数据库通常指的是非关系型分布式数据库
数据库类型 | 关系型数据库 | 非关系数据库 |
---|---|---|
优势 | 1、擅长小数据量的处理 2、擅长复杂的SQL操作,可以关联多张表,可以进行Join等复杂的查询 3、可以方便的生成各种数据对象,利用存储的数据建立窗体和报表,可视化较好
| 1、擅长大量数据的写入和读取,尤其是在做高并发业务的时候 2、快速的查询响应(因为它存放于内存的磁盘的,所以速度是非常非常快的),灵活的数据类型 3、数据结构变更或更新非常方便,不需要更改已有数据的数据结构 4、击碎了性能瓶颈,可以使执行速度变得更快(Redis在进行50万并发量的情况下,它的读取速度是11万次每秒,写入操作是8.1万次每秒) |
劣势 | 1、在进行写操作、尤其是高并发业务的时候速度非常非常慢 2、为有数据更新的表做所以和结构变更 3、字段不固定的应用,如果要增加一个字段,首先要做的是修改表结构,然后再去操作数据 4、对简单的数据去进行查询效率也是非常低的,例如数据库里面存放了20亿条数据,只是想查询一个字段的数据,这20亿条数据可能要操作十多分钟 | 1、不提供复杂的API接口 2、一般仅提供key的索引 3、不适合小数据的处理
|
Redis是一个key-value存储系统,支持网络、可基于内存亦可持久化的日志型、并提供多种语言的API。
和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
Linux环境下(CentOS Linux release 7.3.1611 (Core))安装Redis
进入官网:https://redis.io/
1、查看系统版本
cat /etc/redhat-release
2、进入到opt目录下、创建redis文件夹
cd /opt/
mkdir redis
3、进入/opt/redis/目录下,下载redis
wget http://download.redis.io/releases/redis-4.0.6.tar.gz
4、解压redis-4.0.6.tar.gz
tar -zvxf redis-4.0.6.tar.gz
如果没有wget命令,请cd /切换到上级目录,输入yum install wgert -y安装
5、在安装Redis的过程中是依赖于gcc和tcl命令的,gcc是预编译,tcl是编辑的命令行,
cd /
查看安装gcc信息:
gcc -v
安装命令:
yum install gcc tcl -y
6、切换到Redis目录下面、查看文件并执行make命令安装Redis
cd opt/redis/redis-4.0.6
查看解压之后的文件
ll
安装:在目录下输入
make
在Linux下启动Redis有三种方式:
第一种方式:安装完成之后就自动启动了;
第二种方式:启动配置文件,以文件形式配置启动;
第三者方式:以服务的方式进行启动(最常用);
这个服务就很好理解的,就类似windows下的计算机管理里面的服务,我们的关系型数据库MySQL和Oracle都可以在这里进行启动。
下面我们提一下在Linux系统下如何去配置这些服务。
切换到根目录
cd /
切换到
cd usr/
查看该目录下文件
ll
新建一个目录,不可与目录中已存在的重名
mkdir lksoft
进入
cd lksoft
创建目录
mkdir redis
进入该目录
cd redis/
8、重新设置环境变量 PREFIX
切换刚刚解压的文件目录
cd /opt/redis/redis-4.0.6
执行
make PREFIX=/usr/lksoft/redis/ install
9、查看当前Redis在系统中使用的端口号是否已经被占用
在任意目录执行
ss -tanl
10、将环境变量设置成服务(配置环境变量)
切换至
cd src/
查询文件列表
ll
这里有个重要文件 redis-sentinel,这是它的服务的核心文件
将这个文件复制到刚才新建的文件夹里面
cp redis-sentinel /usr/lksoft/redis/bin
是否覆盖?选择 y
这样就将我们的服务复制到usr下面了。usr下面一般都是环境变量和服务名称
切换回刚刚创建的目录
cd /usr/lksoft/redis/bin
查询文件列表
ll
我们看到已经将这些服务都配置过来了。
我们希望在根目录下启动,这时候我们就需要将这个服务名称作为一个全局的服务名称
回到根目录
cd /
修改配置文件,将这个服务名称作为一个全局的服务名称
vi ~/.bash_profile
这是Linux下环境变量的配置文件
~ 表示系统分区
/ 表示磁盘分区
配置环境变量成
按下esc键,输入:wq!退出
到目前为止环境变量已经配置完成了,
输入source ~/.bash_profile使文件生效
source ~/.bash_profile
启动
切换到之前的redis目录,这里都是redis的工具,我们可以设置redis的端口号和日志文件信息等
cd /opt/redis/redis-4.0.6/utils
启动 初始化
./install_server.sh
Please select the redis port for this instance[6379]:(即是否启用redis的默认端口号6379):直接回车
Please select the redis config file name [/etc/redis/6379.conf] (即是否启用默认配置文件):直接回车
Please select the redis log file name [/var/log/redis_6379.log](即是否启动redis的默认日志文件名):直接回车
Please select the data directory for this instance [/var/lib/redis/6379](即是否加载redis所有的依赖包路径):直接回车
Please select the redis executable path [/usr/lksoft/redis/bin/redis-server] (是否默认使用此redis的默认服务路径[/usr/lksoft/redis/bin/redis-server]): 直接回车
然后显示的是设置的文件信息,是否确认? 直接回车
此处最好截图,记住这些相关信息
至此初始化成功,并且服务已经启动!