概述
RDB快照
触发机制:
- save同步会阻塞
- bsave异步,fork主线程的子线程,中间生成临时rdb文件最后生成正式的rdb文件
- 自动
最佳配置
dbfilename dump-${port}.rdb
dir /bigdiskpath
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
其它触发方式:全量复制,debug reload ,shutdown
AOF(append only file)
以独立日志的方式记录每次写命令,重启时再重新执行AOF文件中的命令达到恢复数据的目的。AOF持久化开启且存在AOF文件时,优先加载AOF文件。
开启AOF功能需要设置配置
appendonly yes,默认不开启。AOF文件名通过appendfilename配置设置,默认文件名是appendonly.aof。保存路径同RDB持久化方式一致,通过dir配置指定。AOF的工作流程操作:命令写入(append)、文件同步(sync)、文件重写(rewrite)、重启加载(load)。
AOF为什么把命令追加到sof_buf中?
Redis使用单线程响应命令,如果每次写AOF文件命令都直接追加到硬盘,那么性能完全取决于当前硬盘负载。先写入缓冲区aof_buf中,还有另一个好处,Reids可以提供多种缓冲区同步硬盘的策略,在性能和安全性方面做出平衡。
文件同步
appendfsync always #每次有数据修改发生时都会写入AOF文件。
appendfsync everysec #每秒钟同步一次,该策略为AOF的缺省策略。
appendfsync no #从不同步。高效但是数据不会被持久化。由操作系统决定
重写机制
AOF文件重写是把Redis进程内的当前数据转化为写命令同步到新AOF文件的过程。优化过时的,无效的,重复的命令。
AOF重写过程可以手动触发和自动触发:
-
手动触发:直接调用bgrewriteaof命令。
-
自动触发:根据auto-aof-rewrite-min-size和auto-aof-rewrite-percentage参数确定自动触发时机。
-
auto-aof-rewrite-min-size:表示运行AOF重写时文件最小体积,默认为64MB。
-
auto-aof-rewrite-percentage:代表当前AOF文件空间(aof_current_size)和上一次重写后AOF文件空间(aof_base_size)的比值。
-
自动触发机制 = aof_current_size > auto-aof-rewrite-min-size && (aof_current_size - aof_base_size) / aof_base_size >= auto-aof-rewrite=percentage
RDB与AOF的对比
最后
以上就是称心网络为你收集整理的Redis学习(三)之持久化的全部内容,希望文章能够帮你解决Redis学习(三)之持久化所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复