数据持久化
Redis提供的数据持久化方式主要有2种:
-
RDB:产生一个数据快照文件
-
AOF:实时追加命令的日志文件
它们分别对应了不同的使用场景,下面我们就来依次分析。
一、RDB
1、介绍
RDB全称Redis Database Backup file
(Redis数据备份文件),也被叫做Redis数据快照。
我们可以通过执行save
或bgsave
命令让Redis在本地生成RDB快照文件,这个RDB文件包含了整个实例接近完整的数据内容。
它的优点如下:
-
RDB文件数据是被压缩写入的,因此RDB文件的体积要比整个实例内存要小
-
当实例宕机恢复时,加载RDB文件的速度很快,能够在很短时间内迅速恢复文件中的数据
它的缺点也很明显:
-
由于是某一时刻的数据快照,因此它的数据并不全
-
生成RDB文件的代价是比较大的,它会消耗大量的CPU和内存资源
因此RDB比较适用于以下场景:
-
主从全量同步数据
-
数据库备份
-
对于丢失数据不敏感的业务场景,实例宕机后快速恢复数据
Redis主从全量同步数据就是使用RDB文件进行的,我们会在后面的文章详细讲到。
由此可以看出,RDB非常适合做数据备份,我们可以定时让Redis生成RDB文件,然后备份这个快照文件即可。
2、定时生成RDB
Redis也提供了定时触发生成RDB文件的配置项:
# 最近15分钟内 至少产生1次写入
save 900 1
# 最近5分钟内 至少产生10次写入
save 300 10
# 最近1分钟内 至少产生10000次写入
save 60 10000
如果达到以上任意条件,则Redis会自动生成新的RDB文件,降低RDB数据内容与实例数据的差异。
3、Copy On Write