redis 高可用与 持久化

目录

一   redis 高可用

(一)redis高可用技术

1,持久化

2,主从复制

3,哨兵

4,Cluster集群

二     redis 持久化

(一)持久化相关概念介绍

1,持久化的功能

2,redis 提供两种方式进行持久化

(二) RDB 持久化

1,rbd 持久化定义

2,触发条件

2.1 手动触发

2.2 自动触发

2.3 其他自动触发机制

3,  bgsave执行流程

3.1 文字版描述bgsave执行流程

3.2 架构图描述bgsave执行流程

4,启动时加载

(三)   AOF 持久化

1, aof 含义

2, 如何开启aof

3, aof 的触发条件

4,aof 的执行流程

三      aof 的执行流程

(一)命令追加(append)

(二)文件写入(write)和文件同步(sync)

1,文件写入(write)和文件同步(sync)  的意义

2,AOF缓存区的同步文件策略(三种)

2.1  appendfsync always

2.2 appendfsync no

2.3 appendfsync everysec

(三)文件重写

1, 文件重写的意义

2, 文件重写的触发

2.1 手动触发

2.2 自动触发

3,  文件重写的流程

3.1  文件重写的流程注意事项

3.2 文件重写的流程

(四)  启动时加载

四     RDB和AOF的优缺点

(一)RDB持久化

(二)AOF持久化

五     总结

1,rdb 和 aof 基本理解

2,rdb和aof 持久化过程

3, 触发方式

4,    rbd 和aof 优先级 


一   redis 高可用

在web服务器中,高可用是指服务器可以正常访问的时间,衡量的标准是在多长时间内可以提供正常服务(99.9%、99.99%、99.999%等等)。
但是在Redis语境中,高可用的含义似乎要宽泛一些,除了保证提供正常服务(如主从分离、快速容灾技术),还需要考虑数据容量的扩展、数据安全不会丢失等。
 

(一)redis高可用技术

在Redis中,实现高可用的技术主要包括持久化、主从复制、哨兵和 Cluster集群,下面分别说明它们的作用,以及解决了什么样的问题。

1,持久化

持久化是最简单的高可用方法(有时甚至不被归为高可用的手段),主要作用是数据备份,即将数据存储在硬盘,保证数据不会因进程退出而丢失。

2,主从复制

主从复制是高可用Redis的基础,哨兵和集群都是在主从复制基础上实现高可用的。主从复制主要实现了数据的多机备份,以及对于读操作的负载均衡和简单的故障恢复。

缺陷:故障恢复无法自动化;写操作无法负载均衡;存储能力受到单机的限制。

3,哨兵

在主从复制的基础上,哨兵实现了自动化的故障恢复。

缺陷:写操作无法负载均衡;存储能力受到单机的限制。

4,Cluster集群

通过集群,Redis解决了写操作无法负载均衡,以及存储能力受到单机限制的问题,实现了较为完善的高可用方案。
 

二     redis 持久化

(一)持久化相关概念介绍

1,持久化的功能

Redis是内存数据库,数据都是存储在内存中为了避免服务器断电等原因导致Redis进程异常退出后数据的永久丢失,需要定期将Redis中的数据以某种形式(数据或命令)从内存保存到硬盘;当下次Redis重启时,利用持久化文件实现数据恢复。除此之外,为了进行灾难备份,可以将持久化文件拷贝到一个远程位置。

2,redis 提供两种方式进行持久化

●RDB 持久化:原理是将 Reids在内存中的数据库记录定时保存到磁盘上。(类似快照
●AOF 持久化(append only file):原理是将 Reids 的操作日志以追加的方式写入文件,类似于MySQL的binlog
由于AOF持久化的实时性更好,即当进程意外退出时丢失的数据更少,因此AOF是目前主流的持久化方式,不过RDB持久化仍然有其用武之地。

(二) RDB 持久化

1,rbd 持久化定义

RDB持久化是指在指定的时间间隔内将内存中当前进程中的数据生成快照保存到硬盘(因此也称作快照持久化),用二进制压缩存储,保存的文件后缀是rdb;当Redis重新启动时,可以读取快照文件恢复数据。

2,触发条件

RDB持久化的触发分为手动触发和自动触发两种。

2.1 手动触发

save命令和bgsave命令都可以生成RDB文件。
save命令会阻塞Redis服务器进程,直到RDB文件创建完毕为止,在Redis服务器阻塞期间,服务器不能处理任何命令请求。
bgsave命令会创建一个子进程,由子进程来负责创建RDB文件,父进程(即Redis主进程)则继续处理请求。

bgsave命令执行过程中,只有fork子进程时会阻塞服务器,而对于save命令,整个过程都会阻塞服务器,因此save已基本被废弃,线上环境要杜绝save的使用。

2.2 自动触发

在自动触发RDB持久化时,Redis也会选择bgsave而不是save来进行持久化。

自动触发最常见的情况是在配置文件中通过save m n,指定当m秒内发生n次变化时,会触发bgsave。
 

 配置文件: vim /etc/redis/6379.conf    以下三个save条件满足任意一个时,都会引起bgsave的调用

配置文件相关解释:

--219行--以下三个save条件满足任意一个时,都会引起bgsave的调用
save 900 1 :当时间到900秒时,如果redis数据发生了至少1次变化,则执行bgsave
save 300 10 :当时间到300秒时,如果redis数据发生了至少10次变化,则执行bgsave
save 60 10000 :当时间到60秒时,如果redis数据发生了至少10000次变化,则执行bgsave


--254行--指定RDB文件名
dbfilename dump.rdb


--264行--指定RDB文件和AOF文件所在目录
dir /var/lib/redis/6379


--242行--是否开启RDB文件压缩
rdbcompression yes
2.3 其他自动触发机制

除了save m n 以外,还有一些其他情况会触发bgsave:
●在主从复制场景下,如果从节点执行全量复制操作,则主节点会执行bgsave命令,并将rdb文件发送给从节点。
●执行shutdown命令时,自动执行rdb持久化。
 

3,  bgsave执行流程

3.1 文字版描述bgsave执行流程

(1)Redis父进程首先判断:当前是否在执行save,或bgsave/bgrewriteaof的子进程,如果在执行则bgsave命令直接返回。 bgsave/bgrewriteaof的子进程不能同时执行,主要是基于性能方面的考虑:两个并发的子进程同时执行大量的磁盘写操作,可能引起严重的性能问题。

                             (就是要等前面的完成,再做这个)
(2)父进程执行fork操作创建子进程,这个过程中父进程是阻塞的,Redis不能执行来自客户端的任何命令
(3)父进程fork后,bgsave命令返回”Background saving started”信息并不再阻塞父进程,并可以响应其他命令
(4)子进程创建RDB文件,根据父进程内存快照生成临时快照文件,完成后对原有文件进行原子替换
(5)子进程发送信号给父进程表示完成,父进程更新统计信息

3.2 架构图描述bgsave执行流程

4,启动时加载

RDB文件的载入工作是在服务器启动时自动执行的,并没有专门的命令。但是由于AOF的优先级更高,因此当AOF开启时,Redis会优先载入 AOF文件来恢复数据;只有当AOF关闭时,才会在Redis服务器启动时检测RDB文件,并自动载入。服务器载入RDB文件期间处于阻塞状态,直到载入完成为止。
Redis载入RDB文件时,会对RDB文件进行校验,如果文件损坏,则日志中会打印错误,Redis启动失败。
 

 

(三)   AOF 持久化

1, aof 含义

RDB持久化是将进程数据写入文件,而AOF持久化,则是将Redis执行的每次写、删除命令记录到单独的日志文件中,查询操作不会记录; 当Redis重启时再次执行AOF文件中的命令来恢复数据。
与RDB相比,AOF的实时性更好,因此已成为主流的持久化方案。

2, 如何开启aof

Redis服务器默认开启RDB,关闭AOF;要开启AOF,需要在配置文件中配置:
vim /etc/redis/6379.conf

--700行--修改,开启AOF
appendonly yes
--704行--指定AOF文件名称
appendfilename "appendonly.aof"
--796行--是否忽略最后一条可能存在问题的指令
aof-load-truncated yes

 /etc/init.d/redis_6379 restart

3, aof 的触发条件

由于需要记录Redis的每条写命令,因此AOF不需要触发,下面介绍AOF的执行流程

4,aof 的执行流程

aof 持久流程做重点介绍 见第三大点

三      aof 的执行流程


AOF的执行流程包括:
命令追加(append)将Redis的写命令追加到缓冲区aof_buf;
文件写入(write)和文件同步(sync)根据不同的同步策略将aof_buf中的内容同步到硬盘;
文件重写(rewrite)定期重写AOF文件,达到压缩的目的。
 

(一)命令追加(append)

Redis先将写命令追加到缓冲区,而不是直接写入文件,主要是为了避免每次有写命令都直接写入硬盘,导致硬盘IO成为Redis负载的瓶颈。
命令追加的格式是Redis命令请求的协议格式,它是一种纯文本格式,具有兼容性好、可读性强、容易处理、操作简单避免二次开销等优点。在AOF文件中,除了用于指定数据库的select命令(如select 0为选中0号数据库)是由Redis添加的,其他都是客户端发送来的写命令。

(二)文件写入(write)和文件同步(sync)

Redis提供了多种AOF缓存区的同步文件策略,策略涉及到操作系统的write函数和fsync函数,说明如下:

1,文件写入(write)和文件同步(sync)  的意义

为了提高文件写入效率,在现代操作系统中,当用户调用write函数将数据写入文件时,操作系统通常会将数据暂存到一个内存缓冲区里,当缓冲区被填满或超过了指定时限后,才真正将缓冲区的数据写入到硬盘里。这样的操作虽然提高了效率,但也带来了安全问题:如果计算机停机,内存缓冲区中的数据会丢失;因此系统同时提供了fsync、fdatasync等同步函数,可以强制操作系统立刻将缓冲区中的数据写入到硬盘里,从而确保数据的安全性。

2,AOF缓存区的同步文件策略(三种)

vim /etc/redis/6379.conf
--729--

2.1  appendfsync always

命令写入aof_buf后立即调用系统fsync操作同步到AOF文件,fsync完成后线程返回。这种情况下,每次有写命令都要同步到AOF文件,硬盘IO成为性能瓶颈,Redis只能支持大约几百TPS写入,严重降低了Redis的性能;即便是使用固态硬盘(SSD),每秒大约也只能处理几万个命令,而且会大大降低SSD的寿命。(即每执行一条就会触发一次aof持久化)

2.2 appendfsync no

命令写入aof_buf后调用系统write操作,不对AOF文件做fsync同步;同步由操作系统负责,通常同步周期为30秒。这种情况下,文件同步的时间不可控,且缓冲区中堆积的数据会很多,数据安全性无法保证。(即不进行持久化

2.3 appendfsync everysec

命令写入aof_buf后调用系统write操作,write完成后线程返回;fsync同步文件操作由专门的线程每秒调用一次。everysec是前述两种策略的折中,是性能和数据安全性的平衡,因此是Redis的默认配置,也是我们推荐的配置 (即每秒触发一次持久化 生产环境中常用

(三)文件重写

1, 文件重写的意义

●过期的数据不再写入文件
●无效的命令不再写入文件:如有些数据被重复设值(set mykey v1, set mykey v2)、有些数据被删除了(set myset v1, del myset)等。
●多条命令可以合并为一个:如sadd myset v1, sadd myset v2, sadd myset v3可以合并为sadd myset v1 v2 v3。
通过上述内容可以看出,由于重写后AOF执行的命令减少了,文件重写既可以减少文件占用的空间,也可以加快恢复速度。

2, 文件重写的触发

文件重写的触发,分为手动触发和自动触发

2.1 手动触发

直接调用bgrewriteaof命令,该命令的执行与bgsave有些类似:都是fork子进程进行具体的工作,且都只有在fork时阻塞。

2.2 自动触发

通过设置auto-aof-rewrite-min-size选项和auto-aof-rewrite-percentage选项来自动执行BGREWRITEAOF。 只有当auto-aof-rewrite-min-size和auto-aof-rewrite-percentage两个选项同时满足时,才会自动触发AOF重写,即bgrewriteaof操作。
 

配置文件:

vim /etc/redis/6379.conf

--729--
appendfsync everysec


--771--
●auto-aof-rewrite-percentage 100	:    当前AOF文件大小(即aof_current_size)是上次日志重写时AOF文件大小(aof_base_size)两倍时,发生BGREWRITEAOF操作

--772--
●auto-aof-rewrite-min-size 64mb :        当前AOF文件执行BGREWRITEAOF命令的最小值,避免刚开始启动Reids时由于文件尺寸较小导致频繁的BGREWRITEAOF	

3,  文件重写的流程

3.1  文件重写的流程注意事项

(1)重写由父进程fork子进程进行;

(2)重写期间Redis执行的写命令,需要追加到新的AOF文件中,为此Redis引入了aof_rewrite_buf缓存。

3.2 文件重写的流程

(1)Redis父进程首先判断当前是否存在正在执行bgsave/bgrewriteaof的子进程,如果存在则bgrewriteaof命令直接返回,如果存在 bgsave命令则等bgsave执行完成后再执行。 
(2)父进程执行fork操作创建子进程,这个过程中父进程是阻塞的。
(3.1)父进程fork后,bgrewriteaof命令返回”Background append only file rewrite started”信息并不再阻塞父进程, 并可以响应其他命令。Redis的所有写命令依然写入AOF缓冲区,并根据appendfsync策略同步到硬盘,保证原有AOF机制的正确。
(3.2)由于fork操作使用写时复制技术,子进程只能共享fork操作时的内存数据。由于父进程依然在响应命令,因此Redis使用AOF重写缓冲区(aof_rewrite_buf)保存这部分数据,防止新AOF文件生成期间丢失这部分数据。也就是说,bgrewriteaof执行期间,Redis的写命令同时追加到aof_buf和aof_rewirte_buf两个缓冲区。
(4)子进程根据内存快照,按照命令合并规则写入到新的AOF文件。
(5.1)子进程写完新的AOF文件后,向父进程发信号,父进程更新统计信息,具体可以通过info persistence查看。
(5.2)父进程把AOF重写缓冲区的数据写入到新的AOF文件,这样就保证了新AOF文件所保存的数据库状态和服务器当前状态一致。
(5.3)使用新的AOF文件替换老文件,完成AOF重写。
 

(四)  启动时加载

1,当AOF开启时,Redis启动时会优先载入AOF文件来恢复数据;只有当AOF关闭时,才会载入RDB文件恢复数据。(即默认aof)
2,当AOF开启,但AOF文件不存在时,即使RDB文件存在也不会加载。
3,Redis载入AOF文件时,会对AOF文件进行校验,如果文件损坏,则日志中会打印错误,Redis启动失败。但如果是AOF文件结尾不完整(机器突然宕机等容易导致文件尾部不完整),且aof-load-truncated参数开启,则日志中会输出警告,Redis忽略掉AOF文件的尾部,启动成功。aof-load-truncated参数(这是redis在非正常退出时,忽略最后一条可能存在问题的命令)默认是开启的。
 

四     RDB和AOF的优缺点

(一)RDB持久化

优点:RDB文件紧凑,体积小,网络传输快,适合全量复制;恢复速度比AOF快很多。当然,与AOF相比,RDB最重要的优点之一是对性能的影响相对较小。

缺点:RDB文件的致命缺点在于其数据快照的持久化方式决定了必然做不到实时持久化,而在数据越来越重要的今天,数据的大量丢失很多时候是无法接受的,因此AOF持久化成为主流。此外,RDB文件需要满足特定格式,兼容性差(如老版本的Redis不兼容新版本的RDB文件)。
对于RDB持久化,一方面是bgsave在进行fork操作时Redis主进程会阻塞,另一方面,子进程向硬盘写数据也会带来IO压力。
 

(二)AOF持久化

与RDB持久化相对应,AOF的优点在于支持秒级持久化、兼容性好,缺点是文件大、恢复速度慢、对性能影响大。
对于AOF持久化,向硬盘写数据的频率大大提高(everysec策略下为秒级),IO压力更大,甚至可能造成AOF追加阻塞问题。
AOF文件的重写与RDB的bgsave类似,会有fork时的阻塞和子进程的IO压力问题。相对来说,由于AOF向硬盘中写数据的频率更高,因此对 Redis主进程性能的影响会更大。

五     总结

1,rdb 和 aof 基本理解

rab:周期性的把内存中的数据保存在磁盘中

aof:从reids 操作日志记录中执行的过程同步磁盘中

2,rdb和aof 持久化过程

rdb  :  ① 内存数据---》 写入磁盘中保存的方式

           ② 结果数据---》  写入磁盘中保存数据对象

           ③ 内存 ---》  写入磁盘后,会进行压缩,来减小 .rdb   的磁盘占用空间量

aof  :   ① 内存--》  append  追加的缓存区 ---》  调用cpu 资源来写入到磁盘中

            ②  操作日志记录中 执行的语句  ---》 追加到缓存区  ---》 调用cpu资源来写入到磁盘

            ③  内存---》 缓存 ----》 磁盘  写入后  会周期性的重建 ,跳过一些无效操作来保存

3, 触发方式

rdb   :  ① 手动触发

            ② 自动触发 save m n  ( 假设 save 900 60  则 表示900s 内 60 条语句执行,则触发rdb持                     久化)

            ③ 特殊触发  当手动关闭redis   会进行rdb 持久化的方式

                                  /etc/init.d/redis_6379 sotp | restart

                                 shutdown 关闭时

                                 kill  不会触发

aof     :   ① 手动触发

              ②  自动触发

                    always : 即每执行一条就会触发一次aof持久化

                     no :即不进行持久化

                     every second   即每秒触发一次持久化 生产环境中常用

4,    rbd 和aof 优先级 

前提: ① 因为redis 默认讲数据保存在内存中,所以redis重启、关闭时内存中的数据会丢失

            ② 在redis每次启动时,都会读取持久化文件,来恢复数据到内存中,以保证redis数据的                       完 整性

aof    >  rdb

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/510437.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Pygame基础9-射击

简介 玩家用鼠标控制飞机(白色方块)移动,按下鼠标后,玩家所在位置出现子弹,子弹匀速向右飞行。 代码 没有什么新的东西,使用两个精灵类表示玩家和子弹。 有一个细节需要注意,当子弹飞出屏幕…

实战 | YOLOv8自定义数据集训练实现手势识别 (标注+训练+预测 保姆级教程--含数据集)

导 读 本文将手把手教你用YoloV8训练自己的数据集并实现手势识别。 安装环境 【1】安装torch, torchvision对应版本,这里先下载好,直接安装 pip install torch-1.13.1+cu116-cp38-cp38-win_amd64.whlpip install torchvision-0.14.1+cu116-cp38-cp38-win_amd64.whl 安装好…

剑指offer打卡 JZ7 重建二叉树

在牛客网刷的,还是跟leetcode一样非acm模式,由于急着暑期实习题量不固定,八股算法轮刷 打卡内容偏个人笔记,本人水平一般(代码随想录稀里糊涂刷了一遍),从小白开始分析(甚至会分析语法),尽量一题多解深入探…

VSCode好用插件

由于现在还是使用vue2,所以本文只记录vue2开发中好用的插件。 美化类插件不介绍了,那些貌似对生产力起不到什么大的帮助,纯粹的“唯心主义”罢了,但是如果你有兴趣的话可以查看上一篇博客:VSCode美化 1. vuter 简介&…

LabelConvert: 目标检测和图像分割数据集格式转换工具

LabelConvert LabelConvert是一个目标检测和图像分割的数据集格式转换工具,支持labelme、labelImg与YOLO、VOC和COCO 数据集格式之间的相互转换。 支持的转换格式 安装 pip install label_convert具体使用方法 由于文章篇幅所限,请移步LabelConvert官…

左值与右值,以及c++11的相关特性。

目录 左值 右值 左值引用总结: 右值引用总结: 右值引用使用场景和意义: 1、左值引用的使用场景: 编译器优化1: 2、移动构造与移动赋值: 3、右值引用的使用场景: 编译器优化2&#xff1a…

MATLAB科研绘图与学术图表绘制从入门到精通

💂 个人网站:【 摸鱼游戏】【神级代码资源网站】【工具大全】🤟 一站式轻松构建小程序、Web网站、移动应用:👉注册地址🤟 基于Web端打造的:👉轻量化工具创作平台💅 想寻找共同学习交…

软件资源分享六:EPLAN Electric P8 2024 | Eplan 2024 中文版软件介绍+保姆级安装教程

原文链接:安装激活教程 EPLAN Electric P8 2024 | Eplan 2024 中文版软件介绍安装教程 EPLAN 2024是一款电气设计软件,它可以用于自动化系统的设计、文档编制和维护。EPLAN可以对电气设计的各个方面进行完整的支持,包括电气控制系统、机械设…

新手学python还是c?

考虑到个人情况和职业规划是非常重要的。我这里有一套编程入门教程,不仅包含了详细的视频讲解,项目实战。如果你渴望学习编程,不妨点个关注,给个评论222,私信22,我在后台发给你。 Python作为初学者入门语言…

基于单片机温湿度PM2.5报警设置系统

**单片机设计介绍,基于单片机温湿度PM2.5报警设置系统 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机温湿度PM2.5报警设置系统概要主要涵盖了系统的整体设计思路、硬件组成、软件实现以及报警功能等关键方…

HCIP综合实验1

一.实验拓扑 二.实验要求 1、R5为ISP,只能进行IP地址配置,其所有地址均配为公有Ip地址; 2、 R1和R5间使用PPP的PAP认证,R5为主认证方; R2与R5之间使用PPP的CHAP认证,R5为主认证方; R3与R5之间使用HDLC封装; 3、R2、R3…

高密度集成可伸缩无机薄膜晶体管

引言 与有机晶体管相比,无机半导体晶体管具有优越的性能和可靠性。然而,由于其脆性,不利于制造可拉伸的电子产品。由于这一缺点,它们大多被放置在不可拉伸的部件上,以避免机械应变,加重连接这些刚性部件的…

Java中的可变字符串

Java中的可变字符串 一、什么是可变字符串二、可变字符串的使用场景以及使用步骤1.新建一个可变字符串2.可变字符串的一系列方法 一、什么是可变字符串 可变字符串是Java.lang包下的 在我们学习到JDBC的时候需要将原有的sql语句根据不同的差异添加一段新的关键字或者单词&…

【C语言】函数(涉及生命周期与作用域)

文章目录 函数(function)**函数的概念****函数的作用**在本阶段一般会涉及到两类函数:库函数和自定义函数自定义函数**函数的语法形式** **形参和实参****实参和形参的关系** 函数返回值**函数返回值类型说明****return 语句** 数组做函数参数**函数嵌套…

C语言:二叉树的构建

目录 一、二叉树的存储 1.1 顺序存储 1.2 链式存储 二、二叉树的顺序结构及实现 2.1堆的概念及结构 2.2堆的构建 2.3堆的插入 2.4堆顶的删除 2.5堆的完整代码 三、二叉树的链式结构及实现 3.1链式二叉树的构建 3.2链式二叉树的遍历 3.2.1前序遍历 …

【笔记】即时通讯设计

记录一下最近对im功能的设计 写扩散 1)遍历群聊的成员并发送消息;2)群聊所有人都存一份;3)查询每个成员的在线状态;4)在线的实时推送。 读扩散 1)遍历群聊的成员并发送消息&#x…

【Go】二十、反射

文章目录 1、反射2、对基本数据类型反射3、对结构体进行反射4、获取变量的类别5、通过反射修改基本类型变量的值6、通过反射操作结构体的属性和方法 1、反射 //核心包 import ("reflect")通过反射: 可以在运行时动态获取变量的类型、获取结构体的信息&a…

云容器引擎CCE弹性伸缩

CCE弹性伸缩介绍 CCE的弹性伸缩能力分为如下两个维度: 工作负载弹性伸缩:即调度层弹性,主要是负责修改负载的调度容量变化。例如,HPA是典型的调度层弹性组件,通过HPA可以调整应用的副本数,调整的副本数会…

【数字图像处理】颜色空间的转换

颜色空间的转换 CMY 空间 CMY 颜色空间正好与 RGB 颜色空间互补, 即用白色减去 RGB 颜色空间中的某一颜色值就等于这种颜色在 CMY 颜色空间中的值。 { C 1 − R M 1 − G Y 1 − B \begin{cases}C1-R\\M1-G\\Y1-B\end{cases} ⎩ ⎨ ⎧​C1−RM1−GY1−B​ HSV 空…

非关系型数据库(缓存数据库)redis的基础认知与安装

目录 一.关系型数据库和非关系型数据库 关系型数据库 非关系型数据库 关系数据库与非关系型数据库的区别 ①非关系数据 关系型数据库 非关系型数据库产生背景 数据存储流向 非关系型数据库 关系数据库 二.redis的简介 1.概念 2.Redis 具有以下几个优点: 3.Redi…