Redis的数据持久化

一.概念

可以理解为数据的永久存储,就是将数据存储到一个不会丢失的地方。Redis 的数据存储在内存中,内存是瞬时的,如果系统宕机或重启,又或者Redis崩溃或重启,所有内存数据都会丢失。为解决这个问题,Redis提供两种机制对数据进行持久化存储,以便发生故障后能迅速恢复数据。

二.方式

  • RDB:redis database backup file,是 redis 默认的持久化方式
  • AOF:append of file

(1)RDB

RDB快照记录的是某一时刻的内存数据写入到硬盘上,全量快照

如何使用RDB

提供了两个命令来生成RDB文件,savebgsave,区别在于后者是后台运行的,可以避免主线程的阻塞

(2)AOF

AOF日志文件记录的是内容操作的命令
Redis的数据持久化_第1张图片

AOF记录日志命令是先执行写完命令后再记录该命令到日志里

如何使用AOF

在 Redis 中 AOF 持久化功能默认是不开启的,需要我们修改 redis.conf 配置文件中的以下参数:

appendonly   yes   //表示是否开启AOF持久化
appendfilename "appendonly.aof"   // AOF持久化文件名称

好处

a.不会添加额外的开销
b.不会阻塞写命令的运行

三种写回策略的对比

Redis的数据持久化_第2张图片

重写机制

当redis运行时长长,写操作多的话AOF日志文件就会大,所以redis有这个重写机制。

会重新弄一份AOF日志,对reids所用已存在的数据写一份数据,格式为set key value

写完后就可以覆盖原来的AOF日志,大大减少了AOF日志文件的大小,同时如果失败了,也不会对原来的AOF日志产生影响

习题

1.关于Redis的持久化,下列描述错误的是?

A RDB是以快照的形式,将内存中的数据整体拷贝到硬盘上

B AOF是以日志形式,将内存中的数据整体拷贝到硬盘上

C AOF操作的实时性好,但是产生的数据体积大,数据的恢复速度慢

D 执行RDB存储时会产生阻塞,因此RDB不适合实时备份,而适合定时备份

选B,因为它并不是实时地将数据整体拷贝到硬盘上,通常情况是一条条指令写入

ps: 以上部分图源自小林图解

你可能感兴趣的:(八股文知识,redis,数据库,缓存)