RDB
在指定的时间间隔能对你的数据进行快照存储。
1 | # 时间策略 |
触发条件
- 手动触发:
- save:会阻塞当前Redis服务器,直到持久化完成,线上应该禁止使用。
- bgsave:该触发方式会fork一个子进程,由子进程负责持久化过程,因此阻塞只会发生在fork子进程的时候。
- 自动触发:
- 根据 save m n 配置规则自动触发;
- 从节点全量复制时,主节点发送rdb文件给从节点完成复制操作,主节点会触发 bgsave;
- 执行 debug reload 时;
- 执行 shutdown时,如果没有开启aof,也会触发。
AOF
记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据。
1 | # 是否开启aof |
处理流程
- 命令的实时写入:命令写入 -> 追加到aof的buffer -> 同步到磁盘。
- AOF文件的重写。
触发条件
- 手动触发:
- bgrewriteaof
- 自动触发
定时任务机制
定时任务执行的频率可以在配置文件中通过 hz 10 来设置(这个配置表示1s内执行10次,也就是每100ms触发一次定时任务)。
该值最大能够设置为:500,但是不建议超过:100,因为值越大说明执行频率越频繁越高,这会带来CPU的更多消耗,从而影响主进程读写性能。
定时任务使用的是Redis自己实现的 TimeEvent,它会定时去调用一些命令完成定时任务,这些任务可能会阻塞主进程导致Redis性能下降。因此我们在配置Redis时,一定要整体考虑一些会触发定时任务的配置,根据实际情况进行调整。