redis持久化存储之RDB&AOF

持久化概念:可以将数据写入到磁盘中,在服务器出现停机或者宕机;再次启动redis时,会将磁盘中的备份数据加载到内存中恢复使用,

redis中有两种持久化的机制:

1、RBD(快照)

实现原理:redis是由C语言实现的,fork函数会把主线程复制一个子线程,子线程会把内存的数据依次遍历出来,存放到指定的二进制文件当中:dump.rdb

实现方式:只需要更改配置文件即可,默认提供三种级别的快照方式:

指定在多长时间内,有多少次更新操作,就将数据同步到备份文件中,可以多个条件配合

[外链图片转存失败(img-IWoe8gMO-1564968486715)(.\Redis_RDB.png)]

优点:

  • 使用起来简单,只要修改配置文件,把所有的数据存放到一个文件中,
  • 文件以二进制形式存放,读写很快

缺点:

  • 断电容易造成数据丢失,断电的时间段内的数据不能备份
2、AOF(append only file)

实现原理:redis可以将执行的 ‘所有指令’ 追加到文件中持久化

实现方式:默认没有开启只需要更改配置文件

​ appendonly yes # 是否开启AOF
​ appendfilename “appendonly.aof” # AOF文件

优点:

  • 使用起来简单,只要修改配置文件, 日志文件是单独文件
  • 可以修改日志文件得大小:BGREWRITERAOF
    使用AOF机制的缺点是随着时间的流逝,AOF文件会变得很大。但redis可以压缩AOF文件。

缺点:

  • 文件大小有限制
  • 读取速度比RBD要慢

写入时机:

  • appendfsync always:把每个写命令都立即同步到aof,很慢,但是很安全
  • appendfsync everysec:每秒同步一次,是折中方案
  • appendfsync no:redis不处理交给OS来处理,非常快,但是也最不安全

redis允许我们同时使用两种机制,通常情况下我们会设置AOF机制为everysec 每秒写入,则最坏仅会丢失一秒内的数据。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值