Redis学习之持久化

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6


持久化简介

1.什么是持久化?
利用永久存储介质将数据进行保存,在特定的时间内将数据进行恢复的工作机制称为持久化。持久化的目的是防止意外的数据丢失,确保数据的安全性。
2.持久化保存什么?
①对数据状态进行保存—快照形式。,存储格式简单
②对数据的操作过程进行保存—日志形式,存储格式复杂

Redis的持久化方式

1.RDB快照

(1)RDB概念:
Redis可以通过创建快照来获得存储在内存里面的数据在某个时间点上的副本。Redis创建快照之后,可以对快照进行备份,可以将快照复制到其他服务器从而创建具有相同数据的服务器副本(Redis主从结构,主要用来提高Redis性能),还可以将快照留在原地以便重启服务器的时候使用。
RDB的启动方式

(1)SAVE指令。当SAVE命令执行时,Redis服务器会被阻塞,只有在服务器执行完SAVE命令时、重新开始接受命令请求后客户端发送的命令才会被处理。
(2)BGSAVE指令。因为BGSAVE命令的保存工作是由子进程执行的,所以在子进程创建RDB文件的过程中,Redis服务器仍然可以继续处理客户端的命令请求。注意:执行BGSAVE时,SAVE指令会被拒绝。
(3)SAVE指令配置:save second changes(second:监控时间范围
changes:监控key的变化量)作用是:满足限定时间范围内key的变化数量达到指定数量即进行持久化。
(2)RDB的优缺点
RDB优点
 RDB是一个紧凑压缩的二进制文件,存储效率较高
 RDB内部存储的是redis在某个时间点的数据快照,非常适合用于数据备份,全量复制等场景
 RDB恢复数据的速度要比AOF快很多
 应用:服务器中每X小时执行bgsave备份,并将RDB文件拷贝到远程机器中,用于灾难恢复。

Rdb缺点
 RDB方式无论是执行指令还是利用配置,无法做到实时持久化,具有较大的可能性丢失数据
 bgsave指令每次运行要执行fork操作创建子进程,要牺牲掉一些性能
 Redis的众多版本中未进行RDB文件格式的版本统一,有可能出现各版本服务之间数据格式无法兼容现象

2.AOF日志

(1).AOF概念
 AOF(append only file)持久化:以独立日志的方式记录每次写命令,重启时再重新执行AOF文件中命令达到恢复数据的目的。与RDB相比可以简单描述为改记录数据为记录数据产生的过程
 AOF的主要作用是解决了数据持久化的实时性,目前已经是Redis持久化的主流方式
(2).AOF写的三种策略
 always(每次)
每次写入操作均同步到AOF文件中,数据零误差,性能较低
 everysec(每秒)
每秒将缓冲区中的指令同步到AOF文件中,数据准确性较高,性能较高
在系统突然宕机的情况下丢失1秒内的数据
 no(系统控制)
由操作系统控制每次同步到AOF文件的周期,整体过程不可控
(3).AOF重写
随着命令不断写入AOF,文件会越来越大,为了解决这个问题,Redis引入了AOF重写机制压缩文件体积。AOF文件重写是将Redis进程内的数据转化为写命令同步到新AOF文件的过程。简单说就是将对同一个数据的若干个条命令执行结果转化成最终结果数据对应的指令进行记录。
原理:当进行AOF文件重写时,会有两个缓冲区,执行命令时会将命令写入这两个缓冲区,一个是aof缓存区,还有一个是aof重写缓存区。并且aof缓存区内容会被正常同步到aof文件中。当AOF文件重写完成后,会将AOF重写缓存区内容写入到新的AOF文件中。新文件原子的覆盖现有的AOF文件。

3.区别

1、RDB是快照,数据恢复速度比AOF要快

2、AOF默认每秒同步一次,最多丢失一秒的数据,而RDB不一定。因此AOF数据一致性好。

3、AOF文件体积比RDB大,但是提供了AOF重写

4、如果你不小心执行了FLUSHALL命令,但只要AOF文件未被重写,那么只要停止服务器,移除AOF文件末尾的FLUSHALL命令并重启Redis,就可以将数据集恢复到 FLUSHALL 执行之前的状态

5、由于AOF文件的更新频率通常比RDB文件更新频率高,因此AOF还原服务器优先级更高。

Redis学习之持久化_Redis


Redis学习之持久化_持久化_02


阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: redis