Redis是一种内存数据库,因此如果服务器发生故障或意外关闭,它会丢失所有存储的数据。为了解决这一问题,Redis提供了两种持久化方式:RDB(Redis Database)和AOF(Append-only file)。
1.RDB
RDB持久化通过将Redis的数据集转储到磁盘上的二进制文件中来实现,这个过程是通过fork一个子进程来完成的。RDB持久化的优点是它很简单,因为它只需要备份一个文件。在同等条件下,RDB持久化所需的空间比AOF持久化小得多,因为它只需要一个文件即可。此外,使用RDB持久化进行备份和恢复也比使用AOF持久化更快。
RDB的配置指令如下:
save 900 1 # 在900秒内如果至少有1个键被修改,则执行保存操作save 300 10 # 在300秒内如果至少有10个键被修改,则执行保存操作save 60 10000 # 在60秒内如果至少有10000个键被修改,则执行保存操作
2.AOF
AOF持久化通过记录服务器接收到的每个写操作来实现。写操作以Redis协议格式追加到文件末尾,在启动服务器时重新执行以恢复原始的数据集。由于AOF文件是一个文本文件,因此它可以轻松地通过压缩、编辑、查看或手动修复。
AOF持久化的缺点是它会占用更多的磁盘空间。此外,它因为每个写操作都需要额外的磁盘 I/O,所以在某些情况下可能比RDB持久化慢。
AOF的配置指令如下:
appendonly yes # 开启 AOF 持久化,默认为 no appendfilename "appendonly.aof" # AOF 文件名,默认为 "appendonly.aof"appendfsync everysec # 每秒钟执行一次 fsync
3.配置推荐
通常建议使用RDB和AOF的混合持久化方式,以便在保存点之间通过AOF保存所有修改并在头脑暂停下使用RDB保存恢复数据。该配置的示例如下:
save 900 1save 300 10save 60 10000appendonly yesappendfilename "appendonly.aof"appendfsync everysec
在此配置中,RDB每隔一定时间(900秒,300秒和60秒)会执行一次,并通过AOF持久化保存所有修改。AOF文件每秒钟执行一次fsync。
领取专属 10元无门槛券
私享最新 技术干货