redis持久化详解

RDB演示

RDB全称Redis Database Backup file (Redis数据备份文件),也被叫做Redis数据快照。简单来说就是把内存中的所有数据都记录到磁盘中。当Redis实例故障重启后,从磁盘读取快照文件,恢复数据。快照文件称为RDB文件,默认是保存在当前运行目录。

执行命令为save,需要注意的是,该命令由redis主进程执行,执行期间会阻塞所有命令,适合在redis停机的时候使用

ubuntu_docker:0>save
"OK"
ubuntu_docker:0>

因此可以使用另一个命令:bgsave,顾名思义,由子进程在后台创建快照,不阻塞主进程命令,适合在redis运行时使用

ubuntu_docker:0>bgsave
"Background saving started"
ubuntu_docker:0>

redis内部也提供触发RDB的机制,可以在redis.conf中找到:
在这里插入图片描述
RDB的其他配置也在redis.conf中:
redis持久化详解_第1张图片

而data目录下的dump.rdb就是保存的redis快照
在这里插入图片描述

RDB的fork原理

bgsave开始时会fork主进程得到子进程,子进程共享主进程的内存数据。完成fork后读取内存数据并写入RDB文件.
redis持久化详解_第2张图片

RDB方式bgsave的基本流程?

  • fork主进程得到一个子进程,共享内存空间
  • 子进程读取内存数据并写入新的RDB文件
  • 用新RDB文件替换旧的RDB文件。

RDB会在什么时候执行? save 60 1000代表什么含义?

  • 默认是服务停止时。
  • 代表60秒内至少执行1000次修改则触发RDB

RDB的缺点?

  • RDB执行间隔时间长,两次RDB之间写入数据有丢失的风险
  • fork子进程、压缩、写出RDB文件都比较耗时

AOF演示

AOF全称为Append Only File(追加文件)。Redis处理的每一个写命令都会记录在AOF文件,可以看做是命令日志文件。

redis持久化详解_第3张图片

AOF默认是关闭的,需要修改redis.conf配置文件来开启AOF:

在这里插入图片描述
AOF的命令记录的频率也可以通过redis.conf文件来配:
redis持久化详解_第4张图片
redis持久化详解_第5张图片

EDB与AOF对比

RDB和AOF各有自己的优缺点,如果对数据安全性要求较高,在实际开发中往往会结合两者来使用
redis持久化详解_第6张图片

如果有兴趣了解更多相关内容,欢迎来我的个人网站看看:瞳孔的个人空间

你可能感兴趣的:(数据库,redis,缓存,数据库)