Redis 学习笔记 #Redis持久化

RDB持久化

Redis Database Backup File(Redis数据备份文件)简称 Redis 数据快照

Redis 将内存中数据记录到磁盘

Redis 故障重启后从磁盘读取 RDB file 恢复数据

save #主进程执行 RDB 阻塞所有命令

bgsave #子进程执行 RDB

注:关于bgsave 开始时将主进程中页表 fork(拷贝) 到子进程 实现子进程共享主进程的内存数据(页表存放虚拟内存与物理内存映射关系 主进程只能操作虚拟内存)

fork 基于 copy-on-write 技术

  • 主进程进行读操作,访问共享内存(例如:数据A)
  • 主进程进行写操作(例如 数据B),拷贝一份数据(数据B'),进行写操作,相应的对于数据B的读也指向了(数据B')

Redis 默认服务停止前将执行一次 RDB

RDB 的缺点

  • 间隔时间长,两次 RDB 之间写入数据有丢失的风险
  • fork 子进程、压缩、写出 RDB 文件都比较耗时间

AOF持久化

Append Only File(追加文件)

Redis 处理的命令均记录在 AOF文件(等同于命令日志文件)

Redis 中 AOF 默认关闭

AOF 命令记录默认频率 appendfsync everysec

注:其中 always 可靠性高但性能过差, no 性能最高但可靠性较差, everysec为折中选择

AOF文件相较于 RDB文件更大

通过 bgrewriteaof 命令让 AOF文件执行重写功能 以简化同一key多次写操作

Redis 在 AOF文件超过阈值时会自动去重写 AOF文件

  • auto-aof-rewrite-percentage 100 (相比上次文件增长超过多少百分比触发)
  • auto-aof-rewrite-min-size 64mb (文件体积大于阈值触发)

AOF 与 RDB 对比

RDB

AOF

持久化方式

定时对整个内存进行快照

记录执行的命令

数据完整性

不完整(两次备份间数据丢失)

相对完整(取决于appendfsync)

文件大小

文件体积小(可压缩)

文件体积大

宕机恢复速度

数据恢复优先级

低(数据完整性弱于AOF)

高(数据完整性高)

系统资源占用

高(CPU与内存大量占用)

低(主要是磁盘IO资源)

注:AOF重写时也将占用大量CPU与内存资源

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值