Redis持久化(RDB、AOF)

Redis的持久化策略包括RDB(文件快照)和AOF(追加日志)。RDB在指定时间点生成数据快照,适合全量备份,恢复速度快,但不实时。AOF记录每次操作,保证实时性,文件较大,恢复相对较慢。AOF有三种同步策略。Redis默认采用RDB持久化。
摘要由CSDN通过智能技术生成

        持久化,就是把存储在内存中的数据,以文件的形式存储到磁盘上。Redis数据库作为内存数据,肯定要考虑到数据持久化的问题。

        Redis提供了两种持久化的方案,一种是文件快照(RDB)方式;一种是过程日志(AOF),将每一步执行的操作保存下来。

        下面将讲述RDB和AOF两种持久化方案的执行方法,以及各自的优缺点。

        在将持久化内容之前,需要说明下备份文件的目录选择,目录需要有写权限,备份文件的目录可以在redis.conf配置文件中修改

一、RDB

        RDB是以文件快照的方式存储数据,Redis提供了两个命令可以执行RDB方式的数据持久化,save命令和bgsave命令。

1.1 save命令

         使用save命令,就可以实现RDB的操作,在redis客户端执行。

        在指定的保存目录下,如上面截图,/home/redis/,会有备份的文件

 1.2 bgsave命令

        save命令有其致命的缺陷:由于redis是单线程的,save命令的执行会阻塞当前redis的服务器,如果save命令执行时间比较长,后面的命令都需要等待,所以线上环境不建议使用save命令。取而代之的是bgsave命令。

        bgsave命令,也是保存数据到磁盘的操作,但不是立即执行,而是另启动一个线程来执行

        当执行bgsave命令后,Redis会生成一个子线程去执行保存操作,Redis内部的所有RDB操作都是使用bgsave命令。

        最后简单介绍下RDB操作在配置文件redis.conf中相关的配置参数 

dbfilename dump.rdb   文件名
dir ./                文件的保存路径,默认./
rdbcompression yes    存储至本地时是否压缩数据,默认开启
rdbchecksum yes       是否进行RDB文件格式校验,默认开启
save second changes   在second时间内发生了changes次变化就执行持久化 如:save 900 1,通常配置文件中会设置多个持久化规则

1.3 RDB的优缺点

        有点:

  • RDB是紧凑压缩的二进制文件,存储效率高
  • RDB存储的是某个时间点内的数据快照,适用于数据备份、全量复制等场景
  • RDB数据恢复速度要快于AOF

        缺点:

  • RDB无法做到实时的持久化
  • bgsave运行需要启动一个子线程,损耗部分性能
  • RDB可能会存在不同版本redis冲突的问题

二、AOF

        AOF方式持久化数据,是以保存过程操作日志的方式保存每次的命令操作,保证数据持久化的实时性。

         对于AOF何时将缓存中的命令操作放到硬盘文件,即上图第三步,AOF提供了三个策略:

  • always(每次):数据零误差,性能低
  • everysec(每秒):准确性高,性能较高
  • no(系统控制):不可控

2.1 开启AOF

        配置文件中appendonly属性修改为yes,默认为no

        配置文件中可以看到AOF默认的同步磁盘文件,使用的everysec,每秒写一次缓存到文件。

 

2.2 AOF重写 

        了解下概念就可以了,随着命令不断写入AOF,文件会越来越大,为了解决这个问题,Redis引入了AOF重写机制压缩文件体积。AOF文件重写是将Redis进程内的数据转化为写命令同步到新AOF文件的过程。简单说就是将对同一个数据的若干个条命令执行结果转化成最终结果数据对应的指令进行记录

        重写的两种方式,手动重写和自动重写

        手动重写

bgrewriteaof

        自动重写,在配置文件中配置触发重写的条件。

#当前的size和设定的size作比较,当前size大于设定size就执行重写
auto-aof-rewrite-min-size size
#按设定的百分比作比较,(当前的size-aof_base_size)/ aof_base_size的值大于百分比就执行重写
auto-aof-rewrite-percentage percent

2.3 AOF的优缺点

        优点:

  • 每次修改都会同步,文件的完整性比较好
  • 每秒同步一次,仅可能后丢失一秒数据

        缺点:

  • aof的持久化的数据文件,相比较rdb方式来说,会大很多,修复的速度也会慢很多
  • aof的运行效率也要比rdb慢

综述:redis默认的持久化方式是RDB方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值