redis持久化

1. RDB

1.1 RDB简介

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

工作机制:每隔一段时间,就把内存中的数据保存到硬盘上的指定文件中。

RDB是默认开启的!

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

RDB的缺点是最后一次持久化后的数据可能丢失。

1.2 RDB保存策略

save 900 1    900 秒内如果至少有 1 个 key 的值变化,则保存

save 300 10   300 秒内如果至少有 10 个 key 的值变化,则保存

save 60 10000  60 秒内如果至少有 10000 个 key 的值变化,则保存

save “”  就是禁用RDB模式;

1.3 RDB常用属性配置

属性

含义

备注

save

保存策略

 

dbfilename

RDB快照文件名

 

dir

RDB快照保存的目录

必须是一个目录,不能是文件名。最好改为固定目录。默认为./代表执行redis-server命令时的当前目录!

stop-writes-on-bgsave-error

是否在备份出错时,继续接受写操作

如果用户开启了RDB快照功能,那么在redis持久化数据到磁盘时如果出现失败,默认情况下,redis会停止接受所有的写请求

rdbcompression

对于存储到磁盘中的快照,可以设置是否进行压缩存储。

如果是的话,redis会采用LZF算法进行压缩。如果你不想消耗CPU来进行压缩的话,

    可以设置为关闭此功能,但是存储在磁盘上的快照会比较大。

rdbchecksum

是否进行数据校验

在存储快照后,我们还可以让redis使用CRC64算法来进行数据校验,但是这样做会增加大约10%的性能消耗,

 如果希望获取到最大的性能提升,可以关闭此功能。

 

1.4 RDB数据丢失的情况

两次保存的时间间隔内,服务器宕机,或者发生断电问题。

1.5 RDB的触发

         ①基于自动保存的策略

         ②执行save,或者bgsave命令!执行时,是阻塞状态。

         ③执行flushdb命令,也会产生dump.rdb,但里面是空的,没有意义。

         ④当执行shutdown命令时,也会主动地备份数据

2. AOF

2.1 AOF简介

  1. AOF是以日志的形式来记录每个写操作,将每一次对数据进行修改,都把新建、修改数据的命令保存到指定文件中。Redis重新启动时读取这个文件,重新执行新建、修改数据的命令恢复数据。
  2. 默认不开启,需要手动开启
  3. AOF文件的保存路径,同RDB的路径一致。
  4. AOF在保存命令的时候,只会保存对数据有修改的命令,也就是写操作!
  5. 当RDB和AOF存的不一致的情况下,按照AOF来恢复。因为AOF是对RDB的补充。备份周期更短,也就更可靠。

 

 

2.2 AOF保存策略

appendfsync always:每次产生一条新的修改数据的命令都执行保存操作;效率低,但是安全!

appendfsync everysec:每秒执行一次保存操作。如果在未保存当前秒内操作时发生了断电,仍然会导致一部分数据丢失(即1秒钟的数据)。

appendfsync no:从不保存,将数据交给操作系统来处理。更快,也更不安全的选择。

推荐(并且也是默认)的措施为每秒 fsync 一次, 这种 fsync 策略可以兼顾速度和安全性。

 

2.3 AOF常用属性

属性

含义

备注

appendonly

是否开启AOF功能

默认是关闭的

appendfilename

AOF文件名称

 

appendfsync

AOF保存策略

官方建议everysec

no-appendfsync-on-rewrite

在重写时,是否执行保存策略

执行重写,可以节省AOF文件的体积;而且在恢复的时候效率也更高。

auto-aof-rewrite-percentage

重写的触发条件

当目前aof文件大小超过上一次重写的aof文件大小的百分之多少进行重写

auto-aof-rewrite-min-size

设置允许重写的最小aof文件大小

避免了达到约定百分比但尺寸仍然很小的情况还要重写

aof-load-truncated

截断设置

如果选择的是yes,当截断的aof文件被导入的时候,会自动发布一个log给客户端然后load

 

2.4 AOF文件的修复

如果AOF文件中出现了残余命令,会导致服务器无法重启。此时需要借助redis-check-aof工具来修复!

命令: redis-check-aof  --fix 文件

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值