Redis持久化操作

  Redis是内存数据库,如果不将内存中的数据保存在磁盘中,那么如果断电后,所有的数据将会丢失,所以Redis提供了持久化功能,Redis持久化有两种方式:RDB和AOF,接下来就聊聊这两种方式

RDB (Redis DataBase)

什么是RDB

在这里插入图片描述
大概就是上面这个图,在指定是时间间隔内将内存中数据集快照写入磁盘,它恢复时将快照文件直接读到内存中
Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写到一个临时文件中,带持久化结束后,在用这个临时文件替换上一次持久化好的文件。整个过程中,主进程不进行任何的IO操作,确保了极高的性能。如果需要大规模的数据恢复,并且对数据的完整性要求不高的,RDB方式要比AOF方式更加高效。但是RDB也有一个缺点,如果在最后一次持久化时宕机了,数据可能会丢失!

RDB默认的保存文件是dump.rdb
在这里插入图片描述

触发机制
  1. save的规则满足情况下,会自动触发rdb规则
  2. 执行flushall命令
  3. 退出Redis
优点
  1. 适合大规模数据恢复
  2. 对数据完整性不高
缺点
  1. 需要一定的时间间隔进行操作,如果宕机了,最后一次修改的数据就没了
  2. fork进程时会占用一定的空间

AOF (Append Only File)

什么是AOF

在这里插入图片描述
如上图:以日志的形式记录每个写操作,将Redis执行过程的所有指令记录下来(读操作不记录),只允许追加文件不可以改写文件,Redis启动之初会读取文件重新构建数据,就是将所有记录的执行在重新执行一次来恢复数据!

AOF默认保存文件是appendonly.aof
在这里插入图片描述
AOF默认是不开启的,如果要开启,需要手动修改配置文件,将 appendonly 的值改为 yes
在这里插入图片描述

AOF 配置详解
# 配置是否开启,默认是不开启
appendfsync no
# 持久化文件名
appendfilename "appendonly.aof"
# 同步策略
# 始终同步,消耗性能
appendfsync always
# 每秒进行一次
appendfsync everysec
# 不同步,
appendfsync no
# 是否重写,默认为no可以保证数据的安全性
no-appendfsync-on-rewrite no
# 重写的基础准则,百分比
auto-aof-rewrite-percentage 100
# 重写的最小大小
auto-aof-rewrite-min-size 64mb
# redis启动时候加载.aof文件如果末尾文件不完整的话,是否截取掉,如果是yes,自动截取正常启动,如果设置为no则会报错
aof-load-truncated yes
优点
  1. 每次修改都同步,文件的完整性更好
  2. 每秒同步一次,只会丢失一秒的数据
  3. 从不同步,效率最高
缺点
  1. 数据文件远大于rdb,修复的速度更慢
  2. 运行效率比rdb慢

猜你喜欢

转载自blog.csdn.net/weixin_45481406/article/details/109499746
今日推荐