Redis持久化:RDB与AOF核心区别对比
Redis提供RDB(Redis Database)和AOF(Append Only File)两种持久化机制,用于将内存数据保存到磁盘,防止数据丢失。两者在持久化原理、数据安全性、性能影响、文件特性等方面差异显著,以下是具体区别:
dump.rdb)。触发方式包括手动执行save/bgsave命令,或配置save m n(如save 900 1表示900秒内至少1次修改则触发)。appendonly.aof文件)。通过appendfsync参数控制同步频率(如always每命令同步、everysec每秒同步、no由操作系统控制)。save 60 10000配置下,1分钟内1万次修改未触发快照,宕机则丢失这1分钟数据)。appendfsync参数可调整同步频率:always(每命令同步)几乎无数据丢失,但性能较低;everysec(默认,每秒同步)兼顾安全与性能(最多丢失1秒数据);no则依赖操作系统刷盘,丢失时间更长。bgsave命令会fork一个子进程执行持久化,主进程无需参与IO操作,可继续处理客户端请求。但大数据集场景下fork耗时较长(如10GB数据集fork可能需要几百毫秒至1秒),导致短暂阻塞。always同步模式下,每条写命令都需同步到磁盘,写QPS(每秒查询数)会下降约10%-20%;everysec模式下,写性能接近RDB,但仍略低(因需维护日志文件)。flushall命令需依赖备份恢复)。bgrewriteaof命令将大文件压缩为仅包含当前数据的最小命令集(如删除冗余的flushall命令),减小文件体积。当RDB与AOF同时开启时,Redis重启优先使用AOF文件恢复数据(因AOF数据更完整)。若AOF文件损坏,可通过redis-check-aof工具修复(如移除末尾错误命令);若RDB文件损坏,需用备份恢复。
everysec同步模式可在性能与安全之间取得平衡,且支持误操作修复。