Redis6 - 持久化操作

本文详细解析Redis 6的RDB和AOF持久化方式,比较它们的优缺点:RDB侧重高效备份,AOF提供更稳健恢复。了解何时选择RDB,何时AOF,并给出日常实践建议。

Redis 基于内存的数据库,它的数据存到内存中。但是Redis数据也可以写到硬盘中去,这个过程就称为持久化。

Redis 提供了2个不同形式的持久化方式

  • RDB(Redis DataBase)
  • AOF(Append Only File)

1.Redis6 持久化之RDB

在Redis中默认就有RDB操作,默认开启RDB

1.1 RDB是什么?

指定的时间间隔内将内存中的数据集快照写入磁盘(硬盘中),也就是行话讲的 Snapshot快照,它恢复时是将快照文件直接读到内存里。

1.2 备份是如何进行的

Redis会单独创建( fork )一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能,如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏惑,那RDB方式要比 AOF方式更加的高效。RDB的缺点是最后一次持久化后的数据可能丢失。

1.3 Fork

  • Fork的作用是复制一个与当前进程一样的进程。新进程的所有数据(变量、环境变量、程序计数器等)数值都和原进程一致,但是是一个全新的进程,并作为原进程的子进程
  • 在Linux程序中,fork()会产生一个和父进程完全相同的子进程,但子进程在此后多会exec系统调用,出于效率考虑,Linux中引入了“写时复制技术
  • 一般情况父进程和子进程会共用同一段物理内存,只有进程空间的各段的内容要发生变化时,才会将父进程的内容复制一份给子进程。

1.4 dump.rdb文件

在redis.conf中配置文件名称,默认为dump.rdb

1.5 优势

  • 适合大规模的数据恢复
  • 对数据完整性和一致性要求不高 更适合使用
  • 节省磁盘空间
  • 恢复速度快

1.6 劣势

  • Fork的时候,内存中的数据被克隆了一份,大致2倍的膨胀性需要考虑
  • 虽然Redis在fork时使用了写时拷贝技术,但是如果数据庞大时还是比较消耗性能
  • 在备份周期在一定间隔时间做一次备份,所以如果Redis意外down掉的话,就会丢失最后一次快照后的所有修改。

 2.Redis6 持久化之AOF

AOF默认不开启,可以在redis.conf中配置文件名称,默认为 appendonly.aof

AOF文件的保存路径,同RDB的路径一致

AOF 和 RDB 同时开启,系统默认取AOF的数据(数据不会存在丢失)

AOF记录的不仅是数据还有操作

2.1 AOF是什么?

以日志的形式来记录每个写操作(更改内容的操作,增加、修改、删除等)(增量保存),将Redis执行过的所有写指令记录下来读操作不记录),只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据,换言之,redis重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作。

2.2 AOF持久化流程

(1)客户端的请求写命令会被append追加到AOF缓冲区内

(2)AOF缓冲区根据AOF持久化策略[always,everysec,no]将操作sync同步到磁盘的AOF文件中

(3)AOF文件大小超过重写策略或手动重写时,会对AOF文件rewrite重写(只关注最终的结果),压缩AOF文件容量

(4)Redis服务重启时,会重新load加载AOF文件中的写操作达到数据恢复的目的

2.3 优势

  • 备份机制更稳健,丢失数据概率更低
  • 可读的日志文本,通过操作AOF稳健,可以处理误操作

2.4 劣势

  • 比起RDB占用更多的磁盘空间
  • 恢复备份速度要慢(记录东西较多)
  • 每次读写都同步的话,有一定的性能压力
  • 存在个别Bug,造成不能恢复

3. 总结

3.1 日常用哪个好一点?

官方推荐两个都启用

如果对数据不敏感(允许数据有部分丢失的话),可以选单独用RDB

不建议单独用AOF,因为可能会出现Bug

如果只是做纯内存缓存(没有必要使用持久化操作),可以都不用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值