redis高级部分之持久化

1、redis持久化之RDB

①、RDB是什么?
在指定的时间间隔内将redis内存中的数据写入磁盘中,它恢复时是将存在磁盘上的快照文件直接读到内存里的;

②、备份是如何进行的?
redis在进行备份的时候会单独创建(Fork)一个子进程来进行持久化,首先会将内存中的数据写入到一个临时文件夹里,待本次持久化过程结束了,会用这个临时文件替换上一次持久化好的文件。在整个持久化过程中,主进程是不进行任何IO的,这就保证 了redis在持久化时不会影响性能;

③、RDB持久化流程:
在这里插入图片描述fork:fork的作用是在当前进程的基础上复制一个一样的进程。当前进程的所有数据数值和原进程一致,但是是一个全新的进程,并作为原进程的子进程;

④、备份文件名称及路径:
1、默认是dump.rdb文件,可以在redis.config配置文件中421行更改:

 421 dbfilename dump.rdb

2、dump.rdb文件保存路径默认是在redis启动时的命令所在的目录下,也可修改:

 443 # Note that you must specify a directory here, not a file name.
 444 dir ./

⑤、触发快照机制的策略,即触发持久化
1、配置文件配置

 371 # save 3600 1
 372 # save 300 100
 373 # save 60 10000

解释:3600 1 是表示在3600秒内有1个key发生变化,就进行持久化;

2、在redis客户端使用save命令或者bgsave命令,这种方式是手动保存;

  • 但是这种方式最好使用bgsave命令,因为save命令是只管保存,其他的命令会全部阻塞
  • bgsave命令会在redis后台异步操作,不会阻塞;
  • 可以通过lastsave 命令获取最后一次成功执行快照的时间

3、flushall命令也会生成rdb文件,但是是空的,没有意义;

⑥、取消或禁用RDB持久化策略:
1、把redis.config配置文件的save命令全部注释,或者将后面全部设空字符串""即可;如下:

 371 # save 3600 1
 372 # save 300 100
 373  save ""

⑦、优劣:
1、rdb持久化策略优势:

  • 当进行大规模数据恢复时,且对数据的完整性不是做很高要求时,RDB策略是由于AOF策略的;
  • 适合对数据完整性和一致性没有很高要求的场景;
  • 节省磁盘空间;
  • 恢复速度快;

2、rdb持久化策略劣势:

  • fork的时候,内存的数据被copy了一份,大约2陪膨胀性需要考虑;
  • 虽然redis在fork时使用了写时复制技术,但是如果数据量过于庞大,还是比较消耗性能;
  • 备份周期是隔断时间备份一次,所以在本次备份后,还没到下次备份的时间点时,如果在这个时间段内,redis服务器宕机了,数据是无法备份的;

2、redis持久化策略之AOF

①、aof是什么?
aof是以记录日志的形式的来备份数据,将redis执行过的所有写操作的命令记录下来,且记录的文件只需追加不需更改;待redis重启时,会将该文件的命令全部读取出来,执行一次,达到恢复数据的目的;

②、AOF持久化流程:

  • 客户端的写命令,会被append追加到AOF的缓冲区内;
  • AOF缓冲区根据AOF的三种持久化策略:always(服务器每写一个命令都会调用fdatasync将缓冲区命令追加到磁盘中)、everysec(每秒钟调用一次fdatasync将缓冲区的命令追加到磁盘中)、no(根据操作系统的调度来调用fdatasync将缓冲区的命令追加到磁盘中),来同步命令到磁盘中;
  • 当AOF文件大小超过重写策略或者手动重写时,会对AOF文件rewrite重写,压缩AOF文件容量;
  • Redis服务器重启时,会重写加载AOF文件中的写操作来达到恢复数据的目的;
    在这里插入图片描述

③、如何触发AOF持久化策略及文件名称,在redis配置文件中:**

1230 appendonly yes
1231 
1232 # The name of the append only file (default: "appendonly.aof")
1233 
1234 appendfilename "appendonly.aof"

④、设置AOF同步策略,在redis配置文件中:

1257 # If unsure, use "everysec".
1258 
1259 # appendfsync always
1260 appendfsync everysec
1261 # appendfsync no

⑤、AOF持久化优劣:
1、AOF持久化优势:

  • 备份机制更稳健,数据完整性更好;
  • 可读的日志文本,通过操作AOF文件,可以处理误操作;

2、AOF持久化劣势:

  • 比起RDB占用磁盘空间更多;
  • 恢复速度要慢;
  • 每次读写都同步的话,性能压力较大;
  • 极端情况下,会造成数据恢复失败;

3、两个持久化策略如何选择:

  • 官方推荐两个都启用;
  • 如果对数据不敏感,可以单独启用RDB;
  • 不建议单独使用AOF,因为存在不确定的BUG;
  • 如果只做纯内存缓存,可以两个都不用;
  • 两个都开启的情况下,redis默认会加载AOF配置文件,因为数据更完整;
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值