Redis持久化机制|RDB的触发时机|RDB相关配置|RDB安全考虑|AOF数据存储格式|AOF重写机制

持久化

Redis工作时数据都存储在内存中,万一服务器断电,则所有数据都会丢失。针对这种情况,Redis采用持久化机制来增强数据安全性。

RDB机制

每隔一定的时间把内存中的数据作为一个快照保存到硬盘上的文件中。Redis默认开启RDB机制。

RDB触发

  1. 默认配置,
    由于安全性和性能考虑,默认配置了分别以下三个参数
save 900 1 -> 900秒内至少有一次修改则触发保存操作
save 300 10	-> 300秒内至少有10次修改则触发保存操作
save 60 10000 -> 60秒内至少有1万次修改则触发保存操作

Redis持久化机制|RDB的触发时机|RDB相关配置|RDB安全考虑|AOF数据存储格式|AOF重写机制_第1张图片

// 压力测试:测试是否触发参数保存
/usr/local/redis/bin/redis-benchmark

Redis持久化机制|RDB的触发时机|RDB相关配置|RDB安全考虑|AOF数据存储格式|AOF重写机制_第2张图片

  1. 使用命令保存
save -> 同步:前台保存,
bgsave -> 异步:开另一个线程后台保存

Redis持久化机制|RDB的触发时机|RDB相关配置|RDB安全考虑|AOF数据存储格式|AOF重写机制_第3张图片

  1. 使用flushall命令:这个命令也会产生dump.rdb文件,但里面是空的,没有意义
  1. 服务器关闭: 如果执行SHUTDOWN命令让Redis正常退出,那么此前Redis就会执行一次持久化保存。

Redis持久化机制|RDB的触发时机|RDB相关配置|RDB安全考虑|AOF数据存储格式|AOF重写机制_第4张图片

RDB相关配置

Redis持久化机制|RDB的触发时机|RDB相关配置|RDB安全考虑|AOF数据存储格式|AOF重写机制_第5张图片

RDB数据安全考虑

  1. RDB保存机制为断续性,能够提高安全性,但不是绝对的安全

  2. 非绝对安全性:在使用持久化机制后如果真的发生内存断电,上一次保存的数据不会丢失,从上一次保存后到故障时间点之间的数据会丢失,这部分数据在整个数据中占比非常低,说明持久化机制并不是提供绝对安全的解决方案,而是大幅度提高安全性。

  3. 丢失的数据重要性:如果真的有那样绝对不能丢失的数据,例如:金融项目中账目数据,这样的数据也肯定不会仅仅在Redis中存储一份,由此可以推论,Redis中的存储的数据无非是两种情况:
    1)在MySQL中有备份
    2)不重要,丢了没事

  4. 内存断电风险:例如服务器断电,需要接UPS(不间断电源),使服务器不会因为断电失去工作

AOF默认配置

RDB和AOF并存时,以AOF为主
Redis持久化机制|RDB的触发时机|RDB相关配置|RDB安全考虑|AOF数据存储格式|AOF重写机制_第6张图片

Redis持久化机制|RDB的触发时机|RDB相关配置|RDB安全考虑|AOF数据存储格式|AOF重写机制_第7张图片

AOF数据存储格式

Redis持久化机制|RDB的触发时机|RDB相关配置|RDB安全考虑|AOF数据存储格式|AOF重写机制_第8张图片

AOF重写机制

Redis持久化机制|RDB的触发时机|RDB相关配置|RDB安全考虑|AOF数据存储格式|AOF重写机制_第9张图片

持久化文件损坏修复

Redis持久化机制|RDB的触发时机|RDB相关配置|RDB安全考虑|AOF数据存储格式|AOF重写机制_第10张图片

AOF和RDB对比

RDB:

Redis持久化机制|RDB的触发时机|RDB相关配置|RDB安全考虑|AOF数据存储格式|AOF重写机制_第11张图片
AOF:
Redis持久化机制|RDB的触发时机|RDB相关配置|RDB安全考虑|AOF数据存储格式|AOF重写机制_第12张图片
并存:

Redis持久化机制|RDB的触发时机|RDB相关配置|RDB安全考虑|AOF数据存储格式|AOF重写机制_第13张图片

建议:
Redis持久化机制|RDB的触发时机|RDB相关配置|RDB安全考虑|AOF数据存储格式|AOF重写机制_第14张图片

你可能感兴趣的:(Redis,零)