命令 | save | bgsave |
IO | 同步 | 异步 |
阻塞 | 阻塞 | 阻塞(操作不当fork阻塞) |
优点 | 不额外占用内存 | 不阻塞客户端命令 |
缺点 | 阻塞客户端命令 | 需要fork,额外消耗内存 |
redis自动生成RDB文件(不可控)
save 900 1 #900秒 改了一次就自动生成RDB文件
save 300 10 #300秒修改了10次就自动生成RDB文件
redis save配置推荐
#关闭自动保存配置#save 900 1 #900秒 改了一次就自动生成RDB文件#save 300 10 #300秒修改了10次就自动生成RDB文件 dbfilename dump-${port}.rdb #rdb文件名 dir /bigdiskpath #分盘,rdb文件保存位置 stop-writes-on-bgsave-error yes #bdsave出错,停止写入 rdbcompression yes #采用压缩位置 rdbchecksum yes #开启校验和
不容忽视的触发机制
有时候我们没有执行save bgsave命令,也没有开启自动保存命令,还是会生成RDB,可能是因为以下原因:
AOF
RDB存在的问题:耗时耗性能,阻塞丢失数据
AOF运行原理:每执行一条命令,就在AOF中增加一条记录。当需要恢复时,直接执行AOF写入redis
AOF三种策略
命令 | always | everysec | no |
优点 | 不丢失数据 | 每秒一次 | 不用管 |
缺点 | IO开销大 | 丢失一秒数据 | 不可控 |
AOF重写
将过期的,重复的,做一些优化合并
作用:减少磁盘空间占用,加快文件恢复速度
AOF重写两种方式:
bgrewriteaof
aof重写配置
AOF重写配置
auto-aof-rewrite-min-size #AOF重写需要的最小尺寸
auto-aof-rewrite-percentage #AOF文件增长率
aof_current_size #统计当前aof文件大小
aof_base_size #aof上次启动和重写的尺寸
AOF配置
RDB和AOF的比较
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。