Redis(三)持久化

redis持久化-RDB

RDB 是 Redis DataBase 的缩写,即内存块照。因为Redis的数据时存在内存中的,当服务器宕机时,Redis中存储的数据就会丢失。这个时候就需要内存快照来恢复Redis中的数据了。快照就是在某一时刻,将Redis中的所有数据,以文件的形式存储起来。

在这里插入图片描述
配置文件
在这里插入图片描述
在这里插入图片描述
弊端

1.不支持拉链,永远只有一个dump.rdb文件
2.丢失数据相对多一些,因为不是实时将数据落入到文件

优点

类似于java中的序列化:恢复数据速度相对快

redis中的fork()

redis使用fork函数复制一份当前进程(父进程)的副本(子进程)。fork函数采用写复制方式,当复制过程中如果有数据改动,会被同步改动到复制后的数据。因此复制的数据是执行fork时间的数据。
在这里插入图片描述

redis持久化-AOF

AOF (Append Only File) 持久化默认是关闭的,通过将 redis.conf 中将 appendonly no,修改为 appendonly yes 来开启AOF 持久化功能,如果服务器开始了 AOF 持久化功能,服务器会优先使用 AOF 文件来还原数据库状态。只有在 AOF 持久化功能处于关闭状态时,服务器才会使用 RDB 文件来还原数据库状态

打开AOF命令

#开启AOF
appendonly yes
#存放位置
appendfilename "appendonly.aof"
#后台自动重写 
#达到最下重写占比
auto-aof-rewrite-percentage 100
#最小重写大写
auto-aof-rewrite-min-size 64mb

#IO级别,三个级别,默认是每秒
#no:redis不主动调用flush,在内核(kernel)缓冲区中什么时候满了什么时候刷,问题:可能会丢失一个buffer大小的数据
#always:redis写一个就调用一次flush,数据是最可靠的因为,每发生一次写操作,就flush一下
#每秒:每一秒钟掉一次flush,问题:可能会丢失(buffer未满)1秒钟的操作,在no和always中间
appendfsync always
appendfsync everysec
appendfsync no

在这里插入图片描述
AOF文件基本信息解释
在这里插入图片描述

*表示下面的命令有几个元素组成
$表示命令由几个字符组成
比如 *2 表示 select 0,$6表示 select,$1表示 0

如何将数据写入到磁盘
执行bgsave命令
在这里插入图片描述
这是会生成 dump.rdb文件
在这里插入图片描述
同时redis中有日志输出
在这里插入图片描述

解释
Background saving started by pid 2661
bgsave 开始 在pid 2661中,这个是开启一个子进程
DB saved on disk
DB保存到磁盘
RDB: 8 MB of memory used by copy-on-write
RDB:使用写时复制 8M 的内存
Background saving terminated with success
bgsave 成功

开始重写 4.0之后的版本
执行下面的命令,appendonly.aof文件也会生成一个RDB的存储
在这里插入图片描述
执行重写命令 bgrewriteaof
在这里插入图片描述
在这里插入图片描述
会继续生成增量日志,一个RDB和AOF的混合体,这个混合体以redis开头
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龘龍龙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值