Redis-持久化

RDB快照(snapshot)

(1)Redis将内存数据库快照保存dump.rdb二进制文件中
(2)Redis将内存flush到磁盘文件的默认策略: N秒内数据集至少有M个改动
(3)Redis允许手动flush,重新生成rdb文件并覆盖旧rdb,命令: savebgsave
(4)Redis默认采用的是bgsave方式备份,save和bgsave对比如下:
命令savebgsave
IO类型同步异步
是否阻塞redis其他命令
优点不会消耗额外内存不阻塞客户端命令
缺点阻塞客户端命令需要fork子进程,消耗内存

 Redis在执行bgsave时,主线程会fork一个basave子进程,共享主线程的所有内存数据,所以不会阻塞客户端命令

AOF(append-only file)

(1)Redis将客户端执行的 修改命令采用resp协议格式写入appendonly.aof中
(2)Redis执行fsync的默认策略:

appendfsync alawys:每次有新命令追加到AOF文件时就执行一次 fsync,最慢最安全
appendfsync everysec:每秒fsync一次,兼具性能与安全,最多丢失1秒数据
appendfsync no:从不fsync,最快最不安全

(3)Redis会重写aof文件,默认策略:

auto‐aof‐rewrite‐min‐size 64mb:aof文件大小大于64M
auto‐aof‐rewrite‐percentage:较上次重写后的aof文件大小增长100%
(4)Redis可以使用bgrewirteaof手动触发aof文件重写,类似bgsave,fork子进程执行

RDB与AOF对比

命令
RDBAOF
启动优先级
体积
恢复速度
数据安全性
容易丢失数据依据策略决定

Redis混合持久化

重启Redis时,由于RDB容易丢数据,而AOF恢复速度慢,所以Redis支持RDB+AOF混合持久化。

(1)Redis支持混合持久化,前提是必须开启AOF

aof‐use‐rdb‐preamble yes

(2)Redis在进行AOF重写时,会先将整个内存库进行RDB快照处理,并将增量的AOF修改内容一起写入新的AOF文件中

Redis数据备份策略

  1. 写crontab定时调度脚本,每小时都copy一份rdb或aof的备份到一个目录中去,仅仅保留最近48小时的备份
  2. 每天都保留一份当日的数据备份到一个目录中去,可以保留最近1个月的备份
  3. 每次copy备份的时候,都把太旧的备份给删了
  4. 每天晚上将当前机器上的备份复制一份到其他机器上,以防机器损坏
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值