一、RDB
1、RDB:内存数据保存到磁盘中实现持久化(中间会进行压缩)
1-1、持久化的方式:基于结果,有手动、自动、被动触发方式( bgsave)
手动触发:直接使用bgsave(时间把握不好的话,当要执行bgsave的时候,是需要提交邮件申请的)
自动触发:save m n 900秒至少1次操作(配置文件)
被动:1) 执行shutdown 之后,会触发bgsave, 2)正常渠道关闭redis 的时候(不包括暴力关闭,例如 rm -rf /var/lib/redis.pid)
1-2、RDB:类似于快照,"周期性"的进行保存,个人偏向于触发式的快照这个说法 save m n
二、AOF
1、AOF :内存数据,先append 追加到缓冲区中,再从缓冲区中根据同步写入的策略,写入到磁盘中
1-1、持久化的方式:基于执行语句,主要有手动、自动方式
手动:bgrewriteaof
自动:1)基于定期时间执行,2)基于AOF文件和缓存数的差异值进行aof(默认64M)
同步写入策略:1)everysecond, 2 ) always ,3 ) no
1-2、"压缩"功能:针对于AOF文件进行的"压缩"处理,主要体现在rewrite重写机制
rewrite重写,针对于以下几点
1)过期的key
2)无效的key
3)多条合并
以此,节省磁盘资源
三、RDB 和AOF的对比
1、RDB持久化速度相较于AOF更快(基于结果保存,并且直接将内存中的数据,写入到磁盘中)
2、从redis重启后的数据恢复角度看,AOF会比RDB 更为安全
3、优先级:仅当AOF功能关闭时,才会基于RDB进行恢复
4、RDB和AOF持久化的文件对比而言,AOF的文件体力天然会比RDB 要大,并且在首次全量备份后,会进行增量备份,毕竞容易造成了一个redis服务器本身的磁盘空间问题—》1)共享存储2)定时归档,类似于find /etc/ -name '*.log' -mtime +30 | xargs scp
find /etc -name ‘*.log’ -mtime +30 -exec rm -rf {}\;