1.非关系型数据库
前言:许多Web应用都将数据保存到关系型数据库( RDBMS)中,应用服务器从中读取数据并在浏览器中显示。但随着数据量的增大、访问的集中,就会出现RDBMS的负担加重、数据库响应恶化、 网站显示延迟等重大影响。为了解决这些影响,使用非关系型数据库。Memcached/redis是高性能的分布式内存缓存服务器,通过缓存数据库查询结果,减少对关系型数据库访问次数,以提高动态Web等应用的速度、 提高可靠性。
RDBMS即关系数据库管理系统(Relational Database Management System)
非关系型数据库:以键值对的方式存储数据,缓存数据库。
nosql的优缺点:
优点:高可扩展性,分布式计算,低成本,架构的灵活性,没有复杂的关系
缺点:没有标准化,有限的查询功能(到目前为止)
缓存服务器作用: 加快访问速度 ,缓解关系型数据库的读压力
2.关系型数据库与非关系型数据库的区别:
什么是关系型数据库?
关系型数据库最典型的数据结构是表,由二维表及其之间的联系所组成的一个数据组织。优点:
1、易于维护:都是使用表结构,格式一致;
2、使用方便:SQL语言通用,可用于复杂查询;
3、复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询。
缺点:
1、读写性能比较差,尤其是海量数据的高效率读写;
2、固定的表结构,灵活度稍欠;
3、高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈;
什么非关系型数据库呢?非关系型数据是一种数据结构化存储方法的集合,可以是文档或者键值对等
优点:
1、格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等,使用灵活,应用场景广泛,而关系型数据库则只支持基础类型。
2、速度快:nosql可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘;
3、高扩展性;
4、成本低:nosql数据库部署简单,基本都是开源软件。缺点:
1、不提供sql支持,学习和使用成本较高;
2、无事务处理;
3、数据结构相对复杂,复杂查询方面稍欠。
3.redis服务介绍:
redis是什么?
redis是一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的Key-Value数据库。
redis的官网:redis.io
注:域名后缀io属于国家域名,是british Indian Ocean territory,即英属印度洋领地
redis特点:
1.丰富的数据结构 -----String,list,set,hash等数据结构的存储
2.支持持久化
3.支持事务 ---------------事务是指“一个完整的动作,要么全部执行,要么什么也没有做”。
4.支持主从
4.redis安装和使用:
下载redis安装压缩包,解压到工作目录下进行编译安装
(1)获取压缩包并解压到工作目录
[root@redis2 ~]# mkdir -p /data/application #工作目录
[root@redis2 ~]# wget https://download.redis.io/releases/redis-6.2.7.tar.gz #下载压缩包
[root@redis2 ~]# tar -zxf redis-6.2.7.tar.gz -C /data/application/
[root@redis2 ~]# cd /data/application/
[root@redis2 application]# ls
redis-6.2.7
[root@redis2 application]# yum install -y gcc make #安装编译工具
[root@redis2 application]# mv redis-6.2.7/ redis
[root@redis2 application]# cd redis/
[root@redis2 redis]# make
(2)对redis的配置文件进行配置,对启动文件进行配置
[root@redis2 redis]# mv redis.conf redis.conf.bak
[root@redis2 redis]# vim redis.conf
bind 0.0.0.0 #监听所有网段,可以修改
daemonize yes #开启后台模式
port 6379 #端口号,可以修改
dir /data/application/redis/data #本地数据库存放持久化数据的目录--需要自己创建
[root@redis2 redis]# mkdir /data/application/redis/data
[root@redis2 redis]# cd /lib/systemd/system
[root@redis2 system]# vim redis.service
[Unit]
Description=Redis
After=network.target
[Service]
ExecStart=/data/application/redis/src/redis-server /data/application/redis/redis.conf --daemonize no
ExecStop=/data/application/redis/src/redis-cli -h 127.0.0.1 -p 6379 shutdown
[Install]
WantedBy=multi-user.target
参数详解:
• [Unit] 表示这是基础信息
• Description 是描述
• After 是在那个服务后面启动,一般是网络服务启动后启动• [Service] 表示这里是服务信息
• ExecStart 是启动服务的命令
• ExecStop 是停止服务的指令• [Install] 表示这是是安装相关信息
• WantedBy 是以哪种方式启动:multi-user.target表明当系统以多用户方式(默认的运行级别)启动时,这个服务需要被自动运行。
(3)启动服务,进入数据库使用
[root@redis2 system]# systemctl daemon-reload
[root@redis2 system]# systemctl start redis.service
[root@redis2 system]# netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 4033/nginx: master
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 910/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1056/master
tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 9057/redis-server 0
tcp6 0 0 :::22 :::* LISTEN 910/sshd
tcp6 0 0 ::1:25 :::* LISTEN 1056/master
[root@redis2 system]# cd /data/application/redis/
[root@redis2 redis]# ./src/redis-cli -h 192.168.142.166 -p 6379 -a wfbmima
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
AUTH failed: ERR AUTH <password> called without any password configured for the default user. Are you sure your configuration is correct?
192.168.142.166:6379> set name haha
OK
192.168.142.166:6379> get name
"haha"
(4)如果没有启动文件进行配置也可以直接启动使用
启动:
[root@redis2 redis]# nohup ./src/redis-server ./redis.conf &
关闭:
[root@redis2 redis]# ./src/redis-cli shutdown
登录:
./src/redis-cli -h 192.168.142.166 -p 6379 -a wfbmima
-h 登录用户 -p 端口号 -a 密码
如果没有密码会直接默认登录
[root@redis2 redis]# ./src/redis-cli
5.redis设置密码
1.临时密码,redis服务关闭即失效
在redis内部直接设置密码:
127.0.0.1:6379> config set requirepass wfbmima
OK
2.永久设置密码:
在配置文件里进行修改,配置文件中加 requirepass 密码
[root@redis2 redis]# vim redis.conf
bind 0.0.0.0
daemonize yes
port 6379
dir /data/application/redis/data
requirepass wfbmima