Redis 数据持久化

一.持久化的两种方式

RDB:Redis Database,某个时刻Redis内存中的数据快照

AOF:Append Only File,所有修改内存数据的指令合集

两种方式都会生成相应的文件落地到磁盘上。

二.RDB

save命令直接调用rdbsave方法,此时会阻塞Redis主进程,直至快照文件生成;

bgsave命令会fork出一个子进程,由fork出来的子进程调用rdbsave。父进程会继续响应来自客户端的读写请求。子进程完成RDB文件生成之后会给父进程发送信号,通知父进程保存完成。

基于这个策略,可以快速的恢复之前某个时间段的数据;
基于RDB模式的恢复速度比AOF更快,因为AOF是一条一条的Redis指令,RDB则是数据最终的模样。数据量大的话所有AOF指令全部重放要比RDB更慢。

如果Redis此时还没有来得及将内存中的数据生成RDB文件,就先挂了,那么距离上次成功生成RDB文件时新增的这部分数据就会全部丢失,而且无法找回;

三.AOF

AOF是对变更指令的记录(所有的获取操作不会记录,因为对当前的Redis数据没有改变;

AOF日志的写入策略,它有三种策略,分别如下:

always 每个命令都会写入文件并且同步到磁盘
everysec 每秒钟同步一次数据到磁盘
no 不强制写,等待OS自己去决定什么时候写

Redis有一个重写(AOF Rewrite)机制,来实现对AOF文件的瘦身(数据的最终状态,忽略数据的变更过程),AOF重写缓冲区会在rewrite开始创建了子进程之后开始使用,此时Redis服务器会把写的指令同时发送到写入缓冲区和重写缓冲区,保证AOF文件中的数据状态与内存状态一致。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值