【Redis—14】Redis持久化

一、持久化概述

持久化可以理解为存储,就是将数据存储到一个不会丢失的地方,如果把数据放在内存中,电脑关闭或重启数据就会丢失,所以放在内存中的数据不是持久化的,而放在磁盘就算是一种持久化。

Redis的数据存储在内存中,内存是瞬时的,如果linux宕机或重启,又或者Redis崩溃或重启,所有的内存数据都会丢失,为解决这个问题,Redis提供两种机制对数据进行持久化存储,便于发生故障后能迅速恢复数据。

 

二、Redis两种持久化方式

1、RDB方式

1.1 什么是RDB方式

Redis Database(RDB),就是在指定的时间间隔内将内存中的数据集快照写入磁盘,数据恢复时将快照文件直接再读到内存。

1.2 如何实现

RDB方式的数据持久化,仅需在redis.conf文件中配置即可

配置文件redis.conf中搜索 SNAPSHOTTING,从SNAPSHOTTING开始下面一直到REPLICATION配置之上,都是持久化的配置文件。

配置格式:save <seconds> <changes>  保存 秒 改变的次数

默认配置代表的意思:

save 900 1  #900秒内有一次变化,保存到磁盘
save 300 10 #300秒内有10次变化,保存到磁盘
save 60 10000 #60秒内有10000次变化,保存到磁盘


dbfilename:设置RDB的文件名,默认文件名为dump.rdb


dir:指定RDB和AOF文件的目录

配置文件:

因为持久化功能默认打开,所以我们在本地肯定是有这些文件的,默认保存路径在当前目录下,我们去找找:

 

1.3 总结

优点:由于存储的是数据快照文件,恢复数据很方便,也比较快

缺点:会丢失最后一次快照以后更改的数据

如果你的应用能容忍一定数据的丢失,那么使用rdb是不错的选择
如果你不能容忍一定数据的丢失,使用rdb就不是一个很好的选择

由于需要经常操作磁盘,RDB 会经常 fork 出一个子进程。如果你的redis数据库很大的话,Fork 占用比较多的时间,并且可能会影响Redis 暂停服务一段时间(millisecond 级别),如果你的数据库超级大并且你的服务器CPU比较弱,有可能是会达到一秒。

 

2、AOF方式

2.1 什么是AOF方式

Append-only File(AOF),Redis每次接收到一条改变数据的命令时,它将把该命令写到一个AOF文件中(只记录写操作,读操作不记录),当Redis重启时,它通过执行AOF文件中所有的命令来恢复数据。

2.2 如何实现

在redis.conf配置文件中搜索APPEND ONLY MODE

参数配置:

appendonly:默认是no,改成yes即开启了aof持久化

appendfilename:指定AOF文件名,默认文件名为appendonly.aof

appendfsync:配置向aof文件写命令数据的策略:

  • no:不主动进行同步操作,而是完全交由操作系统来做(即每30秒一次),比较快但不是很安全
  • always:每次执行写入都会执行同步,慢一些但是比较安全
  • everysec:每秒执行一次同步操作,比较平衡,介于速度和安全之间

dir:指定AOF和RDB文件的目录

auto-aof-rewrite-percentage:当目前aof文件大小超过上一次重写时的aof文件大小的百分之多少时会再次进行重写,如果之前没有重写,则以启动时的aof文件大小为依据

  • aof文件的重写就是对文件内容的整理,将一些命令进行优化,从而可以让文件体积变小,比如 set  k1 v1, 然后又set k1 v2,那么重写后就只会留下set k1 v2,前一个set k1 v1会被删除,因为没有作用。

auto-aof-rewrite-min-size:允许重写的最小AOF文件大小

 

2.3 总结

append-only 文件是另一个可以提供完全数据保障的方案;

AOF 文件会在操作过程中变得越来越大。比如,如果你做一百次加法计算,最后你只会在数据库里面得到最终的数值,但是在你的 AOF 里面会存在 100 次记录,其中 99 条记录对最终的结果是无用的;

但 Redis 支持在不影响服务的前提下在后台重构 AOF 文件,让文件得以整理变小;

可以同时使用这两种方式,redis默认优先加载aof文件

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值