redis持久化方案

持久化
持久化,就是将数据保存到磁盘,机器宕机或者重启数据不丢失,如果存储到内存中的数据,会丢失。

Redis持久化分为:Rdb方式和Aof方式
一、Rdb方式
Redis默认的方式,redis通过快照来将数据持久化到磁盘中。
Rdb方式下Redis降数据保存在内存中,因此读写速度非常快;
快照恢复过程:Redis启动后会读取RDB快照文件,将数据从硬盘载入到内存,一般情况下1GB的快照文件载入到内存的时间约为20~30秒钟
快照: 备份.
设置持久化快照的条件

在redis.conf中修改持久化快照的条件,如下:
在这里插入图片描述
如果900秒(15分钟)内 发生过修改1次修改则 持久化一次数据到次品
如果300秒(5分钟)内 发生过10次修改则 持久化一次数据到次品
如果60秒(1分钟)内 发生过修10000次改则 持久化一次数据到次品

持久化文件存储的目录
在redis.conf中可以指定持久化文件存储的目录
在这里插入图片描述
修改后需要重启才能切换存储方式

RDB的快照过程

  • Redis使用fork函数复制一份当前进程(父进程)的副本(子进程);
  • 父进程继续接收并处理客户端发来的命令,而子进程开始将内存中的数据写入到硬盘中的临时文件;
  • 当子进程写入完所有数据后会用该临时文件替换旧的RDB文件。

Rdb问题

  • 一旦redis非法关闭,当数据不符合快照条件时,数据会丢失
  • 如果数据不重要,则不必要关心。
  • 如果数据不能允许丢失,那么要使用aof方式。

解决方案—手动快照
可以通过SAVE和BGSAVE命令来手动快照,两个命令的区别是前者是由主进程进行快照,会阻塞其他请求,后者是通过fork子进程快照操作。

由于Redis使用fork来复制一份当前进程,那么子进程就会占有和主进程一样的内存资源,比如说主进程8G内存,那么在备份的时候必须保证有16G的内存,要不然会启用虚拟内存,性能非常差。

二、Aof方式
Redis默认是不使用该方式持久化的。Aof方式的持久化,是操作一次redis数据库,则将操作的记录存储到aof持久化文件中。

AOF( append only file )持久化以独立日志的方式记录每次写命令,并在 Redis 重启时在重新执行 AOF 文件中的命令以达到恢复数据的目的。AOF 的主要作用是解决数据持久化的实时性。

第一步:开启aof方式的持久化方案
将redis.conf中的appendonly改为yes,即开启aof方式的持久化方案。
在这里插入图片描述
Aof文件存储的目录和rdb方式的一样。
Aof文件存储的名称
在这里插入图片描述
修改后需要重启服务
在这里插入图片描述
AOF 持久化的实现
在这里插入图片描述
如上图所示,AOF 持久化功能的实现可以分为命令追加( append )、文件写入( write )、文件同步( sync )、文件重写(rewrite)和重启加载(load)。其流程如下:

  • 所有的写命令会追加到 AOF 缓冲中。
  • AOF 缓冲区根据对应的策略向硬盘进行同步操作。
  • 随着 AOF 文件越来越大,需要定期对 AOF 文件进行重写,达到压缩的目的。
  • 当 Redis 重启时,可以加载 AOF 文件进行数据恢复。

注意:
在使用aof和rdb方式时,如果redis重启,则数据从aof文件加载。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

郝文龙

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

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

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

打赏作者

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

抵扣说明:

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

余额充值