Redis两种持久化方式RDB和AOF


前言:

RDB和AOF同时开启,默认AOF
两个配置都在redis.conf里面
数据恢复方式都是把备份文件复制到配置默认路径下,然后重启redis

一、RDB持久化

  1. RDB简单说明
    在指定的时间间隔内将内存中的数据快照写入磁盘,也就是常说的Snapshot快照,它恢复是是将快照文件直接读取到内存里
  2. 备份持久化流程
    Redis会创建(fork)一个子进程来进行持久化,把数据写入到一个临时文件夹里面,等持久化过程结束了,再用这个临时文件替换上次持久化的文件。缺点就是最后一次持久化后的数据可能会丢失。
  3. RDB配置文件说明
  • 打开redis.conf文件
  • 大概在202行,找到SNAPSHOTTING,下面就是RDB的配置内容在这里插入图片描述
################################ SNAPSHOTTING  ################################
 # 多长数据内,数据发生几次变化就会保存
 # 例如save 20 2,20秒内,key被操作2次就会进行写操作
save 20 2


# 当Redis无法写入磁盘,就会关闭写操作(比如磁盘满了)
stop-writes-on-bgsave-error yes

# 创建快照时会压缩文件,但会消耗CPU
rdbcompression yes

# 检查文件的完整性,但会消耗10%的性能
rdbchecksum yes

# 备份持久化的默认名字
dbfilename dump.rdb

# RDB文件的存放路径,./为启动文件目录下
dir ./

  1. RDB的具体命令操作
    1. 启动Redis
      在这里插入图片描述

    2. 在配置文件redis.conf里面加入save 20 2
      在这里插入图片描述

    3. 启动redis客户端redis-cli,并操作两次
      4.

  2. RDB备份
    Redis启动后,会自动读取dump.rdb文件,所以把备份的文件给复制回配置的默认路径下就可以了
    1.和redis.conf里面的配置相同名字
    2.放的目录也要和配置里面的目录相同
    文件备份可以用shell脚本的方式

二、AOF持久化

  1. AOF简单说明
    以日志的形式来记录每一个写操作,将Redis执行过的所以指令全 部记录下来(读操作不记录),只许追加文件但不可以改写文件,redis重新启动后就会重构数据,就是把日志文件里面的指令从前往后执行一遍。
  2. AOF持久化流程
    • 客户端的写命令会被append追加到AOF缓冲区内;
    • AOF缓冲区根据AOF持久化策略【always,everysec,no】将操作sync同步到磁盘的AOF文件中;
    • AOF文件大写超过重写策略或手动重写时,会对AOF文件rewrite重写,压缩AOF文件容量;
  3. AOF配置文件说明
    大概在700行,或者用斜杠/ 问号?来搜索
    在这里插入图片描述
# 开启AOF持久化
appendonly yes
# 文件的默认名字
appendfilename "appendonly.aof"
# 文件生成路径和RDB一样
#下面参数分别为:每次写入、每秒写入,不主动同步写入
appendfsync [always,everysec,no]
  1. AOF异常恢复
    如果AOF文件损坏,则通过redis-check-aof --fix appendonly.aof可执行命令文件进行恢复。
redis-check-aof --fix appendonly.aof
  1. Rewrite压缩
    AOF采用文件追加方式,文件会越来越大,超过阈值就会重写压缩(把命令压缩,变的简短,且数据结果不变)
    这个压缩原理可以细看其他文章或视频

猜你喜欢

转载自blog.csdn.net/G_GUi/article/details/128541144