Redis持久化
RDB(Redis DataBase)
在指定的时间间隔内将内存中的数据集体写入磁盘(Sanpshot快照),恢复时将快照文件直接读取到内存中
触发机制
1、满足save规则的情况时
2、执行flushall
3、退出redis时,也会产生rdb文件
如何恢复rdb文件
将rdp文件放在redis的启动目录即可,redis启动时会自动检查dump.rdb文件,恢复其中的数据
# 查看目录
127.0.0.1:6379> config get dir
1) "dir"
2) "/usr/local/bin"
127.0.0.1:6379>
优点:
- 适合大规模的数据恢复
- 对数据的完整性不敏感的业务
缺点:
- 操作需要一定的时间间隔,特殊情况下,最后一次的修改数据可能会丢失(宕机)
- fork进程时,会占用一定的空间
AOF(Append Only File)
以日志的形式记录每个写的操作,将Redis执行过程的所有指令记录下来(不记录读操作),只追加文件不允许改写文件,redis启动时会读取该文件重新构建数据,即:启动时根据日志文件的内容,将写操作从头到尾执行一次已完成数据恢复。
redis.conf配置
配置文件默认不开启aof,需手动设置为yes,重启redis即可生效
重写规则
当文件大小超过64mb时,会fork一个新的进程来重写文件(文件占用的内存空间会越来越大)
redis-check-aof
aof文件有误,redis启动失败
如果aof文件中存在错误,可用redis-check-aof --fix
命令修复这个文件
修复完成之后重新启动redis即可
优点:
- 没修改一次,都会进行同步,数据的完整性更好
- 效率更高
缺点:
- 每秒同步一次,极端情况下可能会丢失最后一秒的数据
- aof文件远大于rdb文件,修复速度也比rdb慢
- 整体运行效率比rdb慢
RDB与AOF对比:
图片来源:狂神说Java
评论 (0)