【03】持久化

含义:

利用永久性介质将数据进行保存,在特定时间内将保存的数据进行恢复的工作机制。

方式:

(1)RDB

将当前的数据状态进行保存,快照形式,存储数据结果,格式简单,关注点在数据。

(2)AOF

将数据的操作过程进行保存,日志形式,存储操作过程,格式复杂,关注点在操作过程。

一、RDB

1、save

save指令的执行会阻塞当前Redis服务器,直到当前的rdb过程完成,可能阻塞很长时间。

2、bgsave

在这里插入图片描述
发送bgsave指令后,Redis调用fork函数生成子线程,返回消息,后台子线程创建rdb文件。

Redis内部所涉及的rdb操作都是bgsave方式。

3、自动执行

基于条件,Redis服务器在满足条件时发起指令,保存数据

save second changes

4、RDB特殊启动形式

(1)全量复制:主从复制时会启动

(2)服务器重启

(3)服务器关闭时指定保存数据

shutdown save

5、总结

(1)优点

是一个紧凑的二进制文件,存储效率高;

是某个时间点的数据快照,适合数据备份、全量复制等场景;

恢复数据很快;

(2)缺点

无法实时持久化;

bgsave每次都会fork一个子线程,会牺牲一些性能;

不同版本的rdb文件的数据格式不兼容。

二、AOF

以独立日志的方式记录每次写命令,重启时重新执行AOF文件中命令以达到恢复数据的目的。

主要是解决数据持久化的实时性。

1、策略

always——数据零误差,性能较差

everysec(默认)——数据准确性较高,性能较高

no——系统控制,不可控

2、功能开启

appendonly yes|no

配置:appendfsync always|everysec|no

3、重写

为了压缩文件体积,将一个数据的若干条命令执行结果转化为最终结果数据对应的指令进行记录。

(1)作用

降低磁盘占用,提高磁盘利用率;

提高持久化效率,降低持久化写时间,提高IO性能;

降低数据恢复的用时,提高数据恢复效率。

(2)规则

进程内已超时的数据不再写入文件;

忽略无效指令,重写时使用进程内的数据直接生成;

对同一数据的多条写命令合并为一条。

(3)方式

手动重写:

bgrewriteaof
在这里插入图片描述

自动重写:

auto-aof-rewrite-min-size size

auto-aof-rewrite-percentage percentage
在这里插入图片描述

三、总结

在这里插入图片描述
如何选择

  • 对于数据非常敏感,建议使用默认的AOF,everysec数据准确性较高,且能保证较高的性能。
  • 数据呈现阶段有效性,数据能做到阶段内无丢失,建议使用RDB。
  • 灾难恢复选用RDB。
  • 双保险策略,同事开启RDB和AOF,重启后,Redis优先AOF恢复数据。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值