Redis是一个内存数据库,为了保证数据在服务器重启后不会丢失,Redis提供了持久化机制。Redis支持三种主要的持久化方式:RDB、AOF和混合持久化。每种方式都有其特点和适用场景。
RDB持久化
RDB(Redis Database)是Redis默认的持久化方式。它通过创建数据集的时间点快照来工作。
特点:
- 紧凑的单一文件,适合备份
- 灾难恢复能力强
- 适合大规模数据的恢复
- 子进程进行备份,对性能影响小
配置:
在redis.conf中设置:
save 900 1
save 300 10
save 60 10000
这表示900秒内有1个键被修改,300秒内有10个键被修改,或60秒内有10000个键被修改时,触发一次保存。
AOF持久化
AOF(Append Only File)记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来重建数据集。
特点:
- 更好的持久性(可以配置每秒同步)
- 基于日志,易于理解和恢复
- 在误操作时可以快速恢复
配置:
在redis.conf中设置:
appendonly yes
appendfsync everysec
appendfsync可选值:
- always:每个写命令都同步(最安全,最慢)
- everysec:每秒同步一次(折中方案)
- no:由操作系统决定何时同步(最快,但最不安全)
混合持久化
从Redis 4.0开始,Redis支持RDB和AOF的混合持久化模式。
特点:
- 结合了RDB的快速加载和AOF的数据安全性
- 在恢复时,先加载RDB的数据,再应用AOF日志
配置:
在redis.conf中设置:
aof-use-rdb-preamble yes
混合持久化模式在Redis重启时,可以先加载RDB文件,然后再重放AOF文件中的增量命令,这样既保证了恢复速度,又尽可能保证了数据的完整性。
选择合适的持久化方式取决于你的具体需求。如果能承受一定程度的数据丢失,可以选择RDB;如果要求高可用性且能承受更多的磁盘IO,可以选择AOF;如果想兼顾恢复速度和数据安全,可以选择混合持久化。