关于Redis的数据持久化
关于Redis的数据持久化
背景
因为Redis是基于缓存存储数据,一旦服务重启或者崩溃,数据就全部会丢失。
主要措施
- RDB(快照):就像给一个场景拍一张照片。每隔一段时间或者到达某种状态时,就会把全部数据生成一个快照文件,存储在磁盘中。恢复时直接拿出最新照片
复原即可。 - AOF(日志):就像给一个场景拍视频。每次操作都会记录下来,比如你操作了某个数据,就会记录下来,然后生成一个日志文件,存储在磁盘中。恢复时不需要回忆
最终的状态,只需要把视频做过的事情重新做一遍就可以了。
简单来说。RDB是某个状态的备份,而AOF是操作历史的备份。
关于RDB
是什么
在特定时间点,将Redis内存中所有的数据生成一个二进制压缩文件(默认dump.edb)。
优点
- 恢复速度快:服务器宕机后,能用RDB文件快速恢复数据
- 性能高:生成的RDB文件是子进程完成的,几乎不阻塞主进程的执行
- 适合备份:紧凑的二进制文件,便于传输和备份
如何配置
在redis.conf中,主要配置save指令,定义快照的触发条件
# 格式:save <秒> <写操作次数> |
或者手动触发:BGSAVE(后台异步快照)
关于AOF
是什么
记录每一个写操作命令的日志文件(默认appendonly.aof)。Redis在重启时,会先将AOF的所有命令执行一次来重建数据。
优点
- 数据安全性高:默认每秒同步一次日志,最多丢失1秒数据。
- 可读性高:AOF是纯文本格式,可以手动查看或者恢复
如何配置
在redis.conf中,主要配置appendonly指令,默认是关闭的
appendonly yes # 开启AOF |
注意:AOF文件会越来越大,导致恢复时间极长。必须开启自动重写机制
auto-aof-rewrite-percentage 100 # 当前AOF文件比上次重写后大小增长100%时触发 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 花海!
