Redis持久化说明

Redis的持久化是指将内存中的数据持久化到磁盘中,以保证数据在重启或宕机后不会丢失。

Redis提供了两种主要的持久化方式:RDB(Redis DataBase)和AOF(Append Only File)。

RDB(Redis DataBase)

1、RDB快照原理

RDB持久化方式会定期生成当前时刻的数据快照,然后将快照保存到磁盘上。这种方式相当于对整个数据库进行了一次快照,因此适用于备份和恢复数据。

2、RDB配置

在Redis的配置文件redis.conf中,可以通过设置save参数来配置RDB的触发条件,

save 60 1

上述配置表示如果在60秒内至少发生了1个键的改动,则执行持久化操作。

3、redis.conf 其他配置

除了save参数外,redis.conf还提供了其他与RDB相关的配置项,如stop-writes-on-bgsave-error用于在持久化失败时停止写入操作。

4、RDB的备份恢复

通过将RDB文件复制到其他位置或服务器,可以轻松地进行备份和恢复操作。

5、RDB优缺点

RDB的优点是快速、轻量,适合用于备份和恢复数据;缺点是在发生故障时可能会丢失部分数据。

AOF(Append Of File)

1、AOF原理

AOF持久化方式会记录Redis服务器所处理的每个写入操作命令,并将其追加到文件末尾。当服务器重启时,可以通过重新执行AOF文件中的命令来恢复数据。

2、AOF配置


通过设置appendonly yes参数来开启AOF持久化功能,例如:

appendonly yes
3、AOF的备份恢复

AOF文件是一个纯文本文件,可以通过复制、移动或压缩来进行备份和恢复。

4、重写流程

AOF文件会随着写入命令的增加而不断增大,为了减小文件体积并提高性能,Redis提供了AOF重写功能。重写过程会将现有的AOF文件重写成一系列与原命令相同但更简洁的命令。

5、AOF优缺点

AOF的优点是数据更加持久、可靠,适合用于长时间运行的实例;缺点是AOF文件可能会变得很大,导致恢复操作较慢。

AOF和RDB对比

Redis 4.0 混合持久化

Redis 4.0引入了混合持久化机制,将AOF和RDB两种持久化方式结合起来,以兼顾两者的优点。具体配置和优缺点请参考Redis官方文档。

fork优化

当Redis做RDB或AOF重写时,一个必不可少的操作就是执行fork操作创建子进程,对于大多数操作系统来说fork是个重量级错误。虽然fork创建的子进程不需要拷贝父进程的物理内存空间,但是会复制父进程的空间内存页表。例如对于10GB的Redis进程,需要复制大约20MB的内存页表,因此fork操作耗时跟进程总内存量息息相关,如果使用虚拟化技术,特别是Xen虚拟 机,fork操作会更耗时。

fork耗时问题定位:对于高流量的Redis实例OPS可达5万以上,如果fork操作耗时在秒级别将拖慢Redis几万条命令执行,对线上应用延迟影响非常明显。正常情况下fork耗时应该是每GB消耗20毫秒左右。可以在info stats统计中查latest_fork_usec指标获取最近一次fork操作耗时,单位微秒。

如何改善fork操作的耗时:

◆ 1)优先使用物理机或者高效支持fork操作的虚拟化技术,避免使用Xen。

◆ 2)控制Redis实例最大可用内存,fork耗时跟内存量成正比,线上建议每个Redis实例内存控制在10GB以内。

◆ 3)合理配置Linux内存分配策略,避免物理内存不足导致fork失败 4)降低fork操作的频率,如适度放宽AOF自动触发时机,避免不必要的全量复制等。

  • 13
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

明仔丶

谢谢大家

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

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

打赏作者

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

抵扣说明:

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

余额充值