持久化级别
redis提供如下四中持久化方案:
-
完全不持久化,纯内存操作。比如做缓存服务器时。
-
RDB持久化,配置时间间隔,异步持久化。默认的持久化方案。
-
AOF持久化,所有操作都是记录到日志文件,保证所有数据都被记录。 在redis重启时,会使用AOF重建数据集。
-
结合使用RDB和AOF的持久化方案.重启时会使用AOF重建。
RDB优缺点
优点:
-
结构紧凑的文件,相当与系统的实时快照,很适合做数据库备份和灾难恢复。
-
性能优秀,服务线程不需要处理i/o.
-
大数据集上重启很快。不需要重建
缺点:
-
间隔性同步到磁盘,导致有可能会丢失部分数据。
-
fork有可能堵塞导致暂不可用.
AOF优缺点
优点:
-
更加稳定,可以设置为 不同步/每秒同步/完全同步.
-
redis可以rewrite过大的AOF log.
-
保存了所有操作,可以从误操作中回复数据库。
缺点:
-
所需的文件通常比RDB更大
-
查询性能相对比RDB更差。
-
有很稀有的bug存在,RDB没有此类bug.
如何使用
-
如果想要更强的数据一致性,则应该组合使用AOF和RDB
-
如果可以容忍少量的数据丢失,可以只使用RDB.
-
不推荐只是AOF. RDB可以很好的处理备份和灾难恢复.
redis最终会合并两种持久化策略,不过时间比较久
其他
快照
默认情况下RDB数据被存到dump.rdb文件下.
可以手动掉 save/bgsave命令调用.
配置保存策略
# save <seconds> <keys>
save 5 10
save 1 50
RDB数据会先写到临时文件,然后替换掉旧的RDB文件.