<强>背景:RDB不足之处强>
1。耗时,耗性能
生成快照文件耗时,加载快照文件耗时
叉子进程网络开销
写文件磁盘I/O开销2。不可控,丢失数据
引用>
会丢失最后一次快照最后操作的数据。<强>一、工作流程强>
复述,写操作命令——比;aof缓冲区——比;aof文件注意,aof缓冲区的数据同步到磁盘的频率d由aof策略决定
<强>二,AOF三种策略强>
1。总总是
引用>每条指令都即时写入
不会丢失数据,磁盘I/O开销2。每一秒每秒
引用>系统默认策略
每分钟写入一次
可能丢失一秒数据3.没有系统自动
引用>不可控
<强> 3,AOF重写强>
随着时间得推移,aof文件日益变大。会降低磁盘性能,降低数据恢复速度。
引用>
目的:<强> 1。减少磁盘占用;2。加快恢复速度。强>重写操作
方式,一客户端手动发送指令bgrewriteof
服务端叉子进程,子进程对内存中的数据进行回塑然后写入现有的aof文件。方式二,通过配置文件触发
文件增长率
auto-aof-rewrite-percentage 100最小文件尺寸
auto-aof-rewrite-min-size 64 mb<强>四,AOF实验强>
1.复述,写操作
引用><代码> 27.0.0.1:6379>设置hello world 好吧 127.0.0.1:6379>你好设置php 好吧 127.0.0.1:6379>你好设置java 好吧 127.0.0.1:6379>设置你好杰克 好吧 127.0.0.1:6379>设置张三 好吧 127.0.0.1:6379>设置李四 好吧 127.0.0.1:6379>李集枭龙 好代码>上述操作多次覆写你好,李两个关键。
2。查看aof日志文件
引用><代码> $ sudo猫- b/var/lib/redis/appendonly.aof 1 REDIS0009 ?redis-ver5.0.3吗? ? 2 redis-bits ? @ ctime ? ?] used-mem ? ? aof-preamble ? ? $ e ? ? ?问? * 2 3 6美元 4个选择 5美元1 6 0 7 * 3 8 3美元 9集 10 5美元 11个你好 12 5美元 13个世界 14 * 3 15日3美元 16集 17个5美元 18个你好 19 3美元 20 php 21 * 3 22 3美元 23集 24日5美元 25个你好 26日4美元 27个java 28 * 3 29日3美元 30集 31日5美元 32个你好 33 4美元 34岁的杰克 35 * 3 36 3美元 37集 38 5美元 39张 40 3美元 41个圣 42 * 3 43 3美元 44集 45 $ 2 46个李 47个2美元 48个如果 49 * 3 50 3美元 51集 52 $ 2 53岁的李 54 8美元 55枭龙 代码>3。重写aof
引用><代码> 127.0.0.1:6379>bgrewriteaof 背景仅附加文件重写开始 代码>4。查看重写后的aof日志文件
引用><代码> whqlkj@whqlkj: ~ $ sudo猫- b/var/lib/redis/appendonly.aof 1 REDIS0009 ?redis-ver5.0.3吗? ? 2 redis-bits ? @ ctime ? ? ? ?] used-mem ? ? X aof-preamble ? ? ? zhangsanlxiaolonghellojack ? ? ?, ? ? ? 代码><强>五,RDB与AOF对比
对比环节 RDB AOF 启动优先级 低 高 数据恢复速度 快 慢 文件大小 小(rdb二进制压缩文件) 大(重写后的日志记录文件) 数据安全 rdb丢失数据(可能会丢失最后一次保存/bgsave快照之后操作的数据) aof根据策略决定(详见3种同步策略) 操作重量级 重(rdb快照) 轻(aof追加日志)
强>复述,持久化之AOF