可以理解为数据的永久存储,就是将数据存储到一个不会丢失的地方。Redis 的数据存储在内存中,内存是瞬时的,如果系统宕机或重启,又或者Redis崩溃或重启,所有内存数据都会丢失。为解决这个问题,Redis提供两种机制对数据进行持久化存储,以便发生故障后能迅速恢复数据。
RDB快照记录的是某一时刻的内存数据写入到硬盘上,全量快照
提供了两个命令来生成RDB文件,save
和bgsave
,区别在于后者是后台运行的,可以避免主线程的阻塞
AOF日志文件记录的是内容操作的命令
AOF记录日志命令是先执行写完命令后再记录该命令到日志里
在 Redis 中 AOF 持久化功能默认是不开启的,需要我们修改 redis.conf
配置文件中的以下参数:
appendonly yes //表示是否开启AOF持久化
appendfilename "appendonly.aof" // AOF持久化文件名称
a.不会添加额外的开销
b.不会阻塞写命令的运行
当redis运行时长长,写操作多的话AOF日志文件就会大,所以redis有这个重写机制。
会重新弄一份AOF日志,对reids所用已存在的数据写一份数据,格式为set key value
写完后就可以覆盖原来的AOF日志,大大减少了AOF日志文件的大小,同时如果失败了,也不会对原来的AOF日志产生影响
1.关于Redis的持久化,下列描述错误的是?
A RDB是以快照的形式,将内存中的数据整体拷贝到硬盘上
B AOF是以日志形式,将内存中的数据整体拷贝到硬盘上
C AOF操作的实时性好,但是产生的数据体积大,数据的恢复速度慢
D 执行RDB存储时会产生阻塞,因此RDB不适合实时备份,而适合定时备份
选B,因为它并不是实时地将数据整体拷贝到硬盘上,通常情况是一条条指令写入
ps: 以上部分图源自小林图解