Redis 的持久化机制是什么?各自的优缺点

Redis将信息保存在内存

内存的特征就是一旦断电,所有信息都丢失,对于Redis来讲,所有数据丢失,就需要从数据库从新查询所有数据,这个是慢的

更有可能,Redis本身是有新数据的,还没有和数据库同步就断电了

所以Redis支持了持久化方案,在当前服务器将Redis中的数据保存在本地硬盘上

Redis持久化策略有两种

RDB

RDB全称Redis Database Backup file(Redis数据备份文件),也被叫做Redis数据快照。简单来说就是把内存中的所有数据都记录到磁盘中。当Redis实例故障重启后,从磁盘读取快照文件,恢复数据。快照文件称为RDB文件,默认是保存在当前运行目录。

单机游戏到存档点存档,随后前往下一个存档点时,获取了其他物资,被击杀了会从上一次存档点复活,恢复至当时存档状态。

缺点:丢失数据

执行时机

RDB持久化在四种情况下会执行:

  • 执行save命令

    save命令会导致主进程执行RDB,这个过程中其它所有命令都会被阻塞。
  • 执行bgsave命令

    执行后会开启独立进程完成RDB,主进程可以持续处理用户请求,不受影响。
  • Redis停机时

    Redis停机时会执行一次save命令,实现RDB持久化。
  • 触发RDB条件时

    Redis内部有触发RDB的机制、
RDB原理

bgsave开始时会fork主进程得到子进程,子进程共享主进程的内存数据。完成fork后读取内存数据并写入 RDB 文件。

fork采用的是copy-on-write技术:

  • 当主进程执行读操作时,访问共享内存;

  • 当主进程执行写操作时,则会拷贝一份数据,执行写操作。

AOF

AOF是AppendOnly File的缩写,是Redis系统提供了一种记录Redis操作的持久化方案。

在AOF生成的文件中,将忠实记录发生在Redis的操作,从而达到在Redis服务器重启或者宕机之后,继续恢复之前数据状态的机制。

记录所有操作信息并保存,若Redis服务器宕机,可读取这些数据进行恢复。

类似于运行sql文件。

开启AOF作为持久化机制:

  • 修改redis配置文件中的appendonly参数为yes

优点:

  • 占用内存小,备份数据更加可靠

缺点:

  • 备份文件体积很大(比数据本身大),恢复数据速度慢

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

MrJianD

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

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

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

打赏作者

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

抵扣说明:

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

余额充值