Redis的持久化数据

时间:2021-03-04 17:16:46

Redis支持两种持久化:RDB和AOF模式

一、名词解释:

RDB:持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot)。
AOF:持久化记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集。

AOF 文件中的命令全部以 Redis 协议的格式来保存,新命令会被追加到文件的末尾。 Redis 还可以在后台对 AOF 文件进行重写(rewrite)

使得 AOF 文件的体积不会超出保存数据集状态所需的实际大小。

PDB和AOF的优先级:

如果同时开启RDB和AOF模式,AOF的优先级要比RDB高:
Redis 还可以同时使用 AOF 持久化和 RDB 持久化。 在这种情况下, 当 Redis 重启时, 它会优先使用 AOF 文件来还原数据集。

因为 AOF 文件保存的数据集通常比 RDB 文件所保存的数据集更完整。

AOF 的方式有点像ORCAL的逻辑备库!
AOF redis 还会在后台对数据进行重写,比如set key1 , set key2 ,其实set key1 没用,这样就可以把set key1 删掉了。这样保存下来的数据集就很小了可以压缩了!
你甚至可以关闭持久化功能,让数据只在服务器运行时存在。

二、RDB&AOF优缺点

RDB的优缺点:
优点:
1、紧凑易于备份,他就一个文件。
2、RDB可以最大化redis性能、父进程无需做任何操作只需要for一个子进程即可
3、恢复比AOF块

缺点:
1、数据完整性:如果非常注重数据的完整性,那么RDB就不行,虽然他是一个point-in-time 的快照方式,但是在快照的过程中,redis重启了,那么在快照中的这些数据将会丢失
2、数据非常庞大后,非常耗CPU和时间,那么redis讲可能down掉1秒钟设置更长。

AOF的优缺点:
优点:
1、 使用 AOF 持久化会让 Redis 变得非常耐久,AOF默认的每一秒追加一次也可以修改他的方式没执行一次命令追加一次,所以你最多丢失1秒钟的数据
2、 AOF 文件是一个只进行追加操作的日志文件(append only log)
3、 Redis 可以在 AOF 文件体积变得过大时,自动地在后台对 AOF 进行重写

缺点:
1、对于相同的数据集来说,AOF 文件的体积通常要大于 RDB 文件的体积。
2、 根据所使用的 fsync 策略,AOF 的速度可能会慢于 RDB