redis数据备份

1 Redis数据备份恢复分类

在这里插入图片描述

2 RDB备份

2.1 什么是RDB

RDB是redis某一刻在内存中数据的快照。所谓的快照,就是记录在某一时刻的数据状态的文件

2.2 RDB触发机制

2.2.1 RDB 2种触发机制

  1. 定时触发redis.conf中配置save/bgsave
    表示多少秒触发一次,changes表示

    save 900 1
    save 300 10
    save 60 3600
    

    “save 900 1”表示如果900秒内至少1个key发生变化(新增、修改和删除),则重写rdb文件;
    “save 300 10”表示如果每300秒内至少10个key发生变化(新增、修改和删除),则重写rdb文件;
    “save 60 3600”表示如果每60秒内至少10000个key发生变化(新增、修改和删除),则重写rdb文件

  2. 命令触发
    redis-cli: save / bgsave /flushall /shutdown

2.2.2 save和bgsave区别

 save:redis主进程进行数据备份操作,其他数据操作将被阻塞;
 bgsave:redis使用fork()函数启动子线程进行数据备份,redis主线程仍然可以处理key值得增加/删除/查询/修改操作;当redis主线程key发生增加/删除/修改操作时,会触发**写时复制**,这时主线程会将变化的数据复制一份给子进程进行备份,保证了备份时间段内发生的修改能被记录到RDB文件中去。

2.3 RDB优点

1、数据恢复速度快
2、数据采用二进制和数据压缩方式写文件,文件体积小

2.4 RDB缺点

1、2次备份文件直接宕机,数据丢失量大
2、备份时占用cpu,服务器性能下降

2.5 应用场景

1、redis主从备份
2、数据完整性要求不高的业务

3 AOF备份

3.1 什么是AOF

AOF是记录从日志创建以来redis内存种所有key值增加/删除/修改命令的文件

3.2 日志写入时机

  1. 写前复制:在redis命令改变内存数据前就写日志
    缺点:需要检查命令语法的合法性
  2. 写后复制:在redis命令改变内存数据后写日志
    缺点:redis命令修改数据后宕机,数据将丢失
    AOF是在主线程中进行,磁盘I/O过大,会阻塞下一个指令的执行

3.3 写会时机

  1. always:同步写回磁盘,数据完全性高,性能低
  2. everysec:每秒写回磁盘,兼顾数据完整性和性能
  3. no: 由系统决定写回磁盘时机,数据完整性低

3.4 AOF重写

  1. 随着时间的增加,写入的命令越来越多,文件过于庞大
  2. 触发redis.conf文件中配置,启动aof重新
  3. redis启动bgrewriteaof进程,根据当前的redis内存数据重新写一份aof文件,在写aof的同时,主线程的修改命令写到aof缓存区,最后写入aof文件,保障了在生成aof文件是的修改操作不会丢失。下图为AOF重写流程:

在这里插入图片描述

3.5 应用场景

  1. 数据完整性要求较高的场景

4 混合备份

在RDB备份时间间隔内,启动aof数据备份redis数据改变指令

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kingforyang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值