redis 持久化

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

文章目录

一、什么是redis持久化

redis是一个内存数据库一旦断电或服务器进程退出内存数据库中的数据将全部丢失所以需要redis持久化。redis持久化就是把数据保存在磁盘上利用永久性存储介质将数据保存在特定的时间将保存的数据进行恢复的工作机制

二、两种持久化机制

  • RDB(Redis DataBase) 内存快照: 存储数据结果通过数据的方式进行持久化
  • AOF(Append Only File) 增量日志: 存储操作过程通过操作命令的方式进行持久化

三、RDB(Redis DataBase) 内存快照

RDB 原理

在指定的时间间隔内将内存中的数据集写入磁盘也就是快照(Snapshot),数据恢复是将快照文件直接读到内存中

图例:
在这里插入图片描述
解释: redis会单独创建(fork)一个子进程来进行持久化会先将数据写入一个到一个临时文件(dump.rdb)中,待持久化过程结束后再用本次的临时文件替换上次持久化后的文件。fork函数的作用是复制一个与当前进程一样的进程新进程的所有数据数值都和原进程一致但是一个全新的进程并作为原进程的子进程。

RDB的触发方式

1、手动触发:

执行savebgsave命令手动触发快照生成RDB文件


手动触发命令两种:

	save: 该命令会阻塞当前redis服务器执行save命令期间redis不能处理其他命令直到RDB过程结束为止(会造成长时间阻塞不建议使用)
	bgsave:该命令执行后redis会在后台异步进行快照操作快照同时还可以响应客户端的请求阻塞只发生在fork阶段基本上redis内部的所有RDB操作都是采用bgsave命令
	

2、自动触发:

1、redis.conf配置文件中达到save参数的条件自动触发bgsave
在这里插入图片描述
2、主从复制时从节点要从主节点进行全量复制时也会触发bgsave,生成快照发送到从节点
3、执行shutdown(关闭redis服务)会触发bgsave
4、执行flushall(生成一个空的临时文件dump.rdb)

RDB的数据恢复:

备份文件(dump.rdb)移动到redis路径下(可以配置文件的存放路径)启动服务即可redis启动会将文件数据加载到内存在此期间redis会处于阻塞状态直到全部数据存入内存。

RDB的优点

  • 数据恢复快
  • 体积小
  • 数据备份使用子进程对redis服务性能影响小

RDB的缺点

  • 在一定时间间隔进行备份当redis意外宕机将会丢失最后一次修改的数据无法做到秒级持久化
  • fork进程时会占用一定的内存空间
  • RDB文件是二进制的没有可读性

四、AOF(Append Only File) 增量日志

AOF 原理

将客户端的每一个写操作命令以日志的形式记录下来追加到appendonly.aof的文件末尾在redis服务器重启时会加载aof文件中的所有命令来达到数据恢复的目的

图例:
在这里插入图片描述

解释: 当有写命令请求时会追加到AOF缓冲区内AOF缓冲区根据AOF持久化策略[always,everysec,no]将操作同步到磁盘的AOF文件中当AOF文件大小超过重写策略或手动重写时会对AOF文件进行重写来压缩AOF文件容量redis服务重启时会重新加载AOF文件中的写操作来进行数据恢复

AOF的触发方式

1、手动触发

通过bgrewriteaof命令:重新AOF持久化生成aof文件(触发重写)

2、自动触发

默认情况redis是没有开启AOF(默认使用RDB持久化)需要通过配置文件开启

在这里插入图片描述


AOF的持久化策略有三种:

	always: 把每个写命令立即同步到AOF文件很慢但安全
	everysec: 每秒同步一次默认配置
	no: redis不执行写入磁盘交给OS系统处理很快但不安全
	

AOF 重写机制

AOF持久化会把每次写命令都追加到appendonly.aof文件中当文件过大redis的数据恢复时间就会变长因此加入重写策略对aof文件进行重写生成一个恢复当前数据的最少命令集。

AOF的优点

  • 数据安全性高不易丢数据
  • AOF文件有序保存了所有写操作可读性强

AOF的缺点

  • AOF方式生成文件体积大
  • 数据恢复速度比RDB慢
阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: redis