上一篇文字介绍了redis持久化中RDB的使用,该篇文章主要介绍AOP的使用
AOF介绍
原理
以日志的形式来记录每个写操作
,将Redis执行过的所有写指令记录下来(读操作不记录),
只许追加文件但不可以改写文件
,redis启动之初会读取该文件重新构建数据,换言之,redis 重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作
优势
提供了三种appendfsync
1、 每修改同步:appendfsync always 同步持久化 每次发生数据变更会被立即记录到磁盘 性能较差但数据完整性比较好
2、每秒同步:appendfsync everysec 异步操作,每秒记录 如果一秒内宕机,有数据丢失(默认)
3、不同步:appendfsync no 从不同步
劣势
相同数据集的数据而言aof文件要远大于rdb文件,恢复速度慢于rdb
rdb运行效率要高于 aof,每秒同步策略效率较好,不同步效率和rdb相同
测试案例
1、修改配置文件,注意这里并没有关闭RDB
2、重新启动
# 停止
./redis-cli shutdown
# 打开服务
./redis-server /root/myredis/redisRDB.conf
# 查看key
keys *
可以看到的是同时存在 aof 和 rdb 文件,值得一提的是,rdb 文件里面是有数据的,而重新启动并没有加载 rdb 文件中的 key,说明当 aof 文件和 rdb 文件同时存在时,redis 只读取 aof 文件
3、添加key
mset k11 v11 k22 v22 k33 v33 k44 v44 k55 v55
这里也可以测试出 aof 文件更占用内存,从而恢复数据的速度也更慢
这里就没有模拟挂掉的情况了,有兴趣的朋友可以参照上一篇文章操作,操作步骤都是一样的,不过需要注意的是同时存在rdb和aof文件的情况下,redis会优先载入AOF文件来恢复原始的数据, 因为在通常情况下AOF文件保存的数据集要比RDB文件保存的数据集要完整.