Redis09_持久化之RDB和AOF操作

Redis09_持久化之RDB操作


Redis 是一个内存数据库,读写效率比传统数据库要快的多,但缺点是,一旦断电或者宕机,那么内存数据库中的数据将会全部丢失。

因此Redis提供了将内存数据持久化到硬盘,以及用持久化文件来恢复数据库数据的功能。支持以下两种形式的持久化:

  • RDB快照(snapshotting)(默认)
  • AOF(append-only-file)

RDB快照(snapshotting)

RDB是在指定时间间隔内把当前内存中的数据集快照写入磁盘,也就是 Snapshot 快照(数据库中所有键值对数据)。恢复时是将快照文件直接读到内存里。

RDB 有 自动触发手动触发 两种触发方式

自动触发:在 redis.conf 配置文件中的 SNAPSHOTTING 下有如下默认配置:

save 900 1			# 表示900秒内数据集存在1次修改则自动触发bgsave
save 300 10			# 表示300秒内数据集存在10次修改则自动触发bgsave
save 60 10000		# 表示60秒内数据集存在10000次修改则自动触发bgsave

dbfilename dump.rdb	# 设置快照的文件名

触发规则:

1. 满足save的规则
2. 执行了flushall命令
3. 正常redis关机

恢复rdb文件:

127.0.0.1:6379> config get dir
1) "dir"
2) "/usr/local/bin"

将dump.rdb文件放置在以上目录即可,redis启动时会自动恢复其中的数据。

RDB适用于大规模的数据恢复和对数据完整性要求不高的场景
缺点是需要一定的时间间隔进行操作,如果意外宕机,最后一次修改的数据会丢失


AOF(append-only-file)

AOF是记录下所有执行过的写操作命令,恢复的时候重新执行(效率低)

在 redis.conf 配置文件中的 APPEND ONLY MODE 下有如下默认配置:

appendonly no						#AOF默认是关闭的,开启需要修改为 yes
appendfilename "appendonly.aof"		#默认生成的文件名为 appendonly.aof

#appendfsync always					#每一次修改都同步,数据的完整性更好
appendfsync everysec				#每一秒写入一次aof文件,可能会丢失1s的数据
#appendfsync no						#由操作系统决定同步,效率最高 

如果 appendonly.aof 文件有误将不能成功启动 redis,可以通过 redis-check-aof 工具修复该文件:

redis-check-aof --fix appendonly.aof

AOF的缺点:
aof 数据文件一般远远大于 rdb 文件,修复速度慢!
aof 的运行效率比 rdb 慢

猜你喜欢

转载自blog.csdn.net/BLU_111/article/details/108455500