在 Redis 中,有两种主要的持久化方式,分别是快照(Snapshot)和追加文件(Append-Only File,AOF)。
快照持久化通过将内存中的数据保存到磁盘上的一个二进制文件中,称为快照文件(dump.rdb)。这个过程是通过fork一个子进程,然后在子进程中将数据写入到一个新的文件中,最后替换旧的快照文件,以避免对主进程的阻塞。
# Redis 配置文件 redis.conf
save 900 1 # 900秒(15分钟)内至少1次修改
save 300 10 # 300秒(5分钟)内至少10次修改
save 60 10000 # 60秒内至少10000次修改
AOF 持久化记录了对 Redis 服务器执行的所有写操作,以追加的方式保存到一个文件中。当 Redis 重新启动时,可以通过重新执行这些写操作来还原数据。
# Redis 配置文件 redis.conf
appendonly yes # 开启 AOF 持久化
appendfilename "appendonly.aof" # AOF 文件名
Redis 还提供了 AOF Rewrite 机制,可以通过重写 AOF 文件来减小文件的体积。这个操作会创建一个新的 AOF 文件,包含了一段时间内的写操作,并最终替换原有的 AOF 文件。
下面是一个简单的配置文件,同时开启快照和 AOF 持久化:
# Redis 配置文件 redis.conf
save 900 1
save 300 10
save 60 10000
appendonly yes
appendfilename "appendonly.aof"
这样配置后,Redis 会在满足快照条件时生成快照文件,同时将写操作追加到 AOF 文件。你可以根据实际需求选择使用快照、AOF 持久化或两者结合使用。