我是靠谱客的博主 称心网络,最近开发中收集的这篇文章主要介绍Redis学习(三)之持久化,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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学习(三)之持久化所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部