凡是内存数据库都必须要有持久化操作,否则数据断电即失效。
Rdb
redis会单独fork一个子进程去持久化,会先将数据存放在临时数据文件中再用这个临时文件代替上次持久化文件整个过程主进程是不进行任何io操作的。所以会有极高的性能,如果对数据完整性不是很敏感则可以使用rdb。rdb比aof更加高效。他的缺点是最后一次持久化数据可能会丢失。
rdb保存的文件默认是dump.rdb,这个可以再配置文件文件快照中配置
触发rdb规则:
save 规则 满足 save 900 1
执行flushall
退出redis
恢复规则
放到启动目录下就可以
优缺点
大规模可以使用,因为有子进程,所以效率特别高。
缺点:可能会丢失数据 ,因为在save 规则时间内宕机那么可能会丢失数据。
fork 消耗内存。需要备份rdb文件
aof
说白了就是记录我们除了查询的增删改命令。恢复就需要将命令全部执行一遍默认是 appendonly。aof
假如aof 有错 则启动不起来。 redis有工具可以修复
优点
每次修改他都会同步
假如每秒同步一次可能会丢失一秒数据
从不同步效率最高
缺点
数据文件aop远大于rdb
运行速度也比rdb慢