【分享】Redis的持久化策略(RDB和AOF)和适用场景

Redis的持久化策略

Redis的持久化策略有两种:RDBAOF。RDB持久化适用于需要快速备份恢复数据的场景,而AOF持久化适用于对数据精确度和安全性的要求更高的场景。Redis也支持同时使用RDB和AOF两种持久化方式。

 

RDB持久化(Redis DataBase)

RDB持久化是将内存中的数据快照保存到磁盘中。可以手动触发RDB快照或者通过设置定时快照的方式自动触发快照操作。

RDB优点:

  • RDB快照可以提供更好的备份和恢复机制。
  • RDB快照能够避免AOF的潜在问题。
  • RDB快照对于大规模数据的恢复速度比AOF快。

RDB缺点:

  • RDB 快照是定期进行的,如果Redis服务意外停止,则最后一次快照和更新之间的所有数据都将丢失。
  • RDB 快照可能会对Redis服务器的性能产生一些负面影响,尤其是在生成快照时,Redis实例可能会暂停服务。

AOF持久化(Append Only File)

AOF持久化是将Redis服务器接收到的每个写操作都追加到一个AOF文件中。AOF文件可以重放来重新构建数据集,这意味着如果Redis服务器关闭或崩溃,数据集不会丢失

AOF优点:

  • AOF 能够提供更精细的数据持久化和恢复机制。
  • AOF 可以很好地保护数据,即使Redis服务意外停止,最多只会丢失一些写操作。

AOF缺点:

  • AOF文件通常比RDB文件大,因为它记录了每一个写操作,所以可能会占用大量磁盘空间。
  • AOF文件通常比RDB文件慢,因为每个写操作都需要写入磁盘。 AOF功能特别强大,但是它的写入频率也就更高,因此可能会影响性能。

Redis持久化的过程

RDB持久化过程


RDB持久化是将Redis中的数据保存到一个二进制文件中。可以在Redis配置文件中设置保存RDB文件的时间间隔,以实现自动保存。也可以通过命令手动创建RDB快照。开启RDB持久化的命令如下:

redis-cli config set save "900 1 300 10 60 10000"

AOF持久化


AOF持久化是将Redis中的所有写命令以追加方式写入一个文件中。在Redis配置文件中设置AOF文件的保存方式,可以实现自动保存,也可以通过命令手动创建AOF文件。开启AOF持久化的命令如下:

redis-cli config set appendonly yes

开启持久化之后,可以使用以下命令进行手动创建快照或者切换持久化策略:

1. 手动创建快照

redis-cli bgsave

2. 切换持久化策略

redis-cli config set appendonly no
redis-cli config set save ""

#设置为yes
appendonly yes
#存储的文件
appendfilename "appendonly.aof" 

以上命令可以关闭持久化,也可以通过修改参数来切换持久化策略。

Redis的AOF(Aappend-only file)持久化方式可以实现对数据的持久化保存,通过将Redis的指令追加到AOF文件中,可以实现对数据的可靠持久化。

Redis提供了多种AOF设置触发机制,例如:

  1. always:将每条Redis命令都写入AOF文件。

  2. everysec:将AOF缓冲区中的命令至少写入磁盘一次,每秒钟一次。

  3. no:不进行AOF持久化。

举例来说,如果将AOF设置为每秒钟写入磁盘一次,那么当Redis的AOF缓冲区中的命令累积到一定程度或者过了一段时间之后,就会将缓冲区中的命令写入AOF文件,从而实现对数据的持久化保存。这样做既可以保证了数据的可靠性和一致性,又不会对Redis的性能造成过大的损耗。

appendfsync everysec


补充:AOF重写策略

AOF重写是Redis中的一种优化策略,用于缩减AOF文件的大小,避免AOF文件过大影响性能。

AOF重写的实现原理是通过扫描内存中的数据结构,生成一份新的AOF文件,将其中的操作以紧凑的格式写入新的AOF文件中。因为新的AOF文件中的操作是从内存中扫描而来的,所以可以避免AOF文件中的冗余数据,从而达到压缩文件大小的目的。

AOF重写的触发条件:

  • 手动执行BGREWRITEAOF命令
  • 当AOF文件大小达到了redis重写配置选项所指定的大小时(默认为64MB

AOF重写的步骤:

  • Redis开始分析内存中的数据结构。
  • Redis创建一个新的空白AOF文件。
  • Redis将分析过程中遇到的所有写命令以紧凑的格式写入新的AOF文件中。
  • 当写入完所有的命令后,Redis会将旧的AOF文件重命名为备份文件,并将新的AOF文件重命名为AOF文件。
  • Redis重新开始向新的AOF文件中写入命令,继续使用AOF持久化。 

AOF重写的优点:

  • AOF重写可以减少AOF文件的大小,提高Redis的性能。
  • 在AOF文件较大时,重写AOF会更快地进行恢复操作,并且减少了硬盘空间的占用。 

AOF重写的缺点:

  • AOF重写会导致Redis进程在重写期间停顿一段时间,从而影响Redis的性能。因此,在生产环境中,必须谨慎地选择重写时机。
  • 如果AOF重写过于频繁,会影响Redis的性能,并且增加了硬盘的消耗。

你可能感兴趣的:(Redis,redis,缓存,中间件)