Redis 是基于内存的非关系型 K-V 数据库,既然它是基于内存的,如果 Redis 服务器宕机,数据就会丢失。为了避免数据丢失了,Redis 提供了持久化,支持把数据保存到磁盘。Redis提供了 RDB 和 AOF 两种持久化机制。
RDB:把内存数据以快照的形式保存到磁盘上,在指定的时间间隔内,执行指定次数的持久操作,将内存中的数据集快照写入磁盘中,它是 Redis 默认的持久化方式。执行完操作后,在指定目录下会生成一个dump.rdb
文件,Redis 重启的时候,通过加载dump.rdb
文件来恢复数据。
AOF :用日志的形式来记录每个操作命令,追加到文件中,重启时再重新执行 AOF 文件中的命令来恢复数据。它主要解决数据持久化的实时性问题。默认是不开启的。
两种持久化文件加载流程如下:
在 redis.conf 配置文件中支持配置快照策略:
- save 900 1 ## 服务器在900秒之内,对数据库进行了至少1次修改
- save 300 10 ## 服务器在300秒之内,对数据库进行了至少10次修改
- save 60 10000 ## 服务器在60秒之内,对数据库进行了至少10000次修改
Redis 后台使用 bgSave 和 save 指令执行快照操作