Redis学习笔记(6)-redis数据持久化

redis提供两种模式就行数据持久化,一种叫rdb的方式,另外一种叫aof的方式。RDB的方式是直接持久化内存中的数据,而aof的方式是持久化redis的命令。Redis可以选择使用持久化功能,也可以选择不适用。持久化的方式可以选择两者同时,也可以配置其中任意一种。如果两种方式都配置了,redis启动的时候会默认使用AOF的方式来进行数据的恢复。

1.RDB(Redis DataBase)

rdb方式进行数据持久化,默认是开启的。如果想关闭此功能,可以将redis.conf中的如下部分注释掉,并添加最后一行:

#save 900 1
#save 300 10
#save 60 10000
save ""

如果配置了rdb方式进行数据持久化,存在4中情况会触发redis进行自动快照:
A) 根据配置规则触发,如下规则,只要符合一条,会立刻触发redis进行快照备份。

save 900 1    #每900秒发生一次数据变更
save 300 10   #每300秒发生10次数据变更
save 60 10000 #每60秒发生10000次数据变更

B)手动执行save或者bgsave命令。
C)执行flushall命令,但有个前提,就是用户配置了总动快照的规则。
D)执行主从数据库的复制同步时,也会触发快照
redis在使用rdb进行数据库快照时,会fork出一个子进程,这个子进程会将内存中的数据持久化到一个临时文件中,当写数据完毕的时候,会用临时文件替换掉旧的数据文件。主进程继续提供服务,不会受到影响。数据文件可以通过压缩的方式存储,这样更容易传输。一旦redis异常退出,redis就会丢失最后一次备份到发生异常这段时间的数据,因此,rdb适合对数据完整性要求不高的应用持久化策略。

2.AOF(Append Only File)

AOF的方式默认是关闭的,如果要激活次方法,可以修改redis.conf文件中如下的配置,也可以指定文件的名称:

appendonly yes  #激活AOF
appendfilename appendonly.aof  #指定文件名

AOF的方式和RDB不同,一旦redis执行修改数据的命令,会使这些命令以追加的方式,添加到文件的末尾。redis默认的策略是一秒钟执行一次命令的写入。也就是说,redis发生异常,顶多丢失一秒钟的数据,这种方式的持久化,更适合对数据完整性较高的应用。

一旦文件的内容过多多,redis会使用重写的方式,来压缩文件内容,比如执行100此INCR命令,可以用SET命令替换这一百条命令。

在重写会读取现有的aof文件,从主进程fork出一个子进程完成重写任务。当重写执行的那个点后有新的数据更改命令,会被缓存起来,等重写进程完成之后追加到重写的文件中。最后用此文件替换掉原有的文件。当然,这些命令也会被同步持久化到旧的文件中。

3.RDB和AOF的优缺点对比

AOFRDB
恢复速度较慢较快
丢数据的量丢失1秒内的数据可能会丢失很多数据
默认开启

总结:rdb方式适合数据完整性要求不高,但是需要恢复速度很快的应用;AOF的方式适合数据完整性要求较高,恢复速度要求相对不高的应用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值