Redis持久化

简介

Redis提供了2种形式的持久化方式,分别为 RDB 和 AOF

RDB

概念

概念:每隔一段时间对内存中的数据打一次 Snapshot 快照,并将快照写入磁盘文件,恢复数据时,直接将快照加载到内存中即可

如何执行备份

Redis 会单独 fork 一个子进程来进行持久化,该子进程会先将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。整个过程中,主进程不参与任何子进程的IO写操作

什么是fork?

fork 的作用是复制一个与当前进程一样的进程。 新进程的所有数据和原来进程一致,但是是一个全新的进程,并作为原进程的子进程。

在Linux程序中,fork会产生一个和父进程完全相同的子进程,但子进程在此后多会exec系统调用,出于效率考虑,Linux中引入了“写时复制技术”,一般情况父进程和子进程会共用同一段物理内存,只有进程空间的各段的内容要发生变化时,才会将父进程的内容复制一份给子进程

持久化时机

① 在指定的时间间隔内持久化
② 服务shutdown会自动持久化
③ 输入bgsave也会持久化

文件默认保存格式,以及文件保存路径

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

 dbfilename dump.rdb

RDB文件的保存路径

默认为启动Redis时,命令行所在的目录下。也可以修改

dir ./

RDB备份恢复

  1. 关闭Redis
  2. 把要恢复的文件拷贝到工作目录下
  3. 启动redis时,备份数据会直接被加载

RDB优缺点

1)优点:

节省磁盘空间,恢复速度快

2)缺点:

虽然Redis在fork时使用了写时拷贝技术,但是如果数据庞大时还是比较消耗性能。因为每隔一定间做一次备份,所以如果Redis意外down掉的话,就会丢失最后一次快照后的所有修改

AOF

概念

概念:以日志的形式记录Redis执行过的所有写操作(读操作不记录),并且是以追加的形式进行记录的。Redis启动时,会将文件中的写指令从前到后执行一次以完成数据的加载工作

实际上该文件当中不仅有大量的写操作,而且也有原数据

文件默认保存格式,以及文件保存路径

1)AOF默认不开启,需要手动在配置文件中配置

appendonly yes

开启时,需要现在命令行中先临时指定使用AOF,不然很可能会将原来备份的RDB数据给搞丢,原因是因为AOF的优先级必RDB的高

2)AOF文件保存格式

appendfilename "appendonly.aof"

3)AOF文件保存的位置,与RDB的路径一致

AOF同步频率

默认为每秒,即everysec

Rewrite

1)何为rewrite

AOF文件因记录了大量的写操作,文件会越来越大。为避免出现此种情况,新增了重写机制,即当AOF文件的大小超过所设定的阈值时,Redis就会将数据按照记录的操作指令进行合并,最终只保留可以恢复数据的最小指令集

2)Redis如何实现重写

AOF文件持续增长而过大时,会fork出一个新进程进行文件的重写(也是先写临时文件,最后再rename)。Redis4.0版本之后的重写,是指将当前的rdb的数据以二进制的形式附在新的aof头部,作为已有的历史数据,替换掉原来的流水账数据

3)何时重写

重写虽然可以节约大量磁盘空间,减少恢复时间。但是每次重写还是有一定的负担的,因此设定Redis要满足一定条件才会进行重写

系统载入时或者上次重写完毕时,Redis会记录此时AOF大小,设为base_size,如果Redis的AOF当前大小>= base_size +base_size*100% (默认)且当前大小>=64mb(默认)的情况下,Redis会对AOF进行重写

AOF的优缺点

1)优点:

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

2)缺点:

(1)比起RDB占用更多的磁盘空间
(2)恢复备份速度要慢
(3)每次读写都同步的话,有一定的性能压力
(4)存在个别bug,造成恢复不能

RDB和AOF用哪个好

(1)官方推荐两个都启用
(2)如果对数据不敏感,可以选单独用RDB
(3)不建议单独用 AOF,因为高频次的写操作,可能会出现Bug(官方说的,我没遇到过)
(4)如果做纯内存缓存,也要用持久化

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值