美文网首页
Redis持久化(RDB和AOF)

Redis持久化(RDB和AOF)

作者: 宁静的猫 | 来源:发表于2019-11-15 12:05 被阅读0次

将Redis中的数据存储到硬盘上有两种方式,RDB和AOF

1、RDB

RDB文件是Redis中所有数据生成的一个快照,有3种方式生成RDB文件,如下所示:
a、save命令,阻塞的创建RDB文件,若存在老的RDB文件,新的替换掉老的,复杂度O(n)
b、bgsave命令,Redis调用fork()函数生成子进程,由子进程异步创建RDB文件
c、配置规则,推荐配置文件样例如下:

dbfilename dump-${port}.rdb //指定RDB文件名称
dir /bigdishpath //指定RDB文件保存到一个比较大的硬盘目录下
stop-writes-on-bgsave-error yes //bgsave出现问题时,停止写入
rdbcompression yes //开启rdb文件的压缩
rdbchecksum yes //采用校验和的方式

另外,在全量复制、debug reload、shutdown等场景下,也会生成RDB文件。

2、AOF

RDB是一种耗时、耗性能的操作,在Redis宕机的情况下,仍然会丢失数据。针对这种情况,可以采用AOF。

AOF的原理是:在每执行一条Redis命令后,都记录到AOF文件中,如果Redis发生宕机,可以用AOF对数据进行恢复。

AOF的3种策略:
a、always,每执行一条命令,就将其写入硬盘的AOF文件。
b、everysec,每隔一秒,把执行的命令写入AOF文件。
c、no,由操作系统决定什么时候把数据从缓冲区刷入硬盘。

AOF重写:
AOF重写会去除过期的数据,优化需要执行的Redis命令,达到减少硬盘占用量和加快恢复速度的目的。可以通过bgrewriteaof或者AOF重写配置来实现AOF重写。
a、bgrewriteaof命令会fork出一个子进程,对当前Redis中数据进行回溯,重写出一个A OF文件。
b、AOF重写配置项如下:

auto-aof-rewrite-min-size //AOF文件重写需要的尺寸
auto-aof-rewrite-percentage //AOF文件增长率

AOF重写自动触发需要满足如下2个条件:
1、aof_current_size>auto-aof-rewrite-min-size
2、aof_current_size - aof_base_size/aof_base_size>auto-aof-rewrite-percentage

3、总结

RDB和AOF对比,AOF启动优先级更高,操作更轻;RDB体积更小,恢复速度更快,会丢数据。
a、RDB最佳策略:在配置文件中关闭RDB;集中管理,可以按小时、天备份;从节点可以开启RDB
b、AOF最佳策略:大部分情况下打开;AOF重写集中管理;建议设置everysec

相关文章

网友评论

      本文标题:Redis持久化(RDB和AOF)

      本文链接:https://www.haomeiwen.com/subject/zasjictx.html