数据库系列-Redis持久化

本文详细介绍了Redis的两种持久化机制:RDB(快照)和AOF(只追加文件)。RDB在特定时间点保存数据状态,适合灾难恢复;AOF记录操作过程,保证数据安全,支持三种同步策略。AOF重写用于优化存储空间和性能。在实际应用中,Redis持久化常用于抢购、顺序控制、消息展示、服务控制和计数器场景。
摘要由CSDN通过智能技术生成

什么是持久化

利用永久性存储介质将数据进行保存,在特定的时间将保存的数据进行恢复的工作机制称为持久化。以此来防止数据的意外丢失,确保数据安全性。

持久化过程保存的是什么

  • RDB(snapshotting快照)

(1)简介:将当前数据状态进行保存,快照形式,存储数据结果,存储格式简单,关注点在数据,是 Redis 默认采用的持久化方式
(2)启动方式:
【1】save:手动执行一次保存操作,save指令的执行会阻塞当前Redis服务器,直到当前RDB过程完成为止,有可能会造成长时间阻塞,线上环境不建议使用。
【2】bgsave:手动启动后台保存操作,但不是立即执行
save 900 1
#在900秒(15分钟)之后,如果至少有1个key发生变化,Redis就会自动触发BGSAVE命令创建快照。

save 300 10
#在300秒(5分钟)之后,如果至少有10个key发生变化,Redis就会自动触发BGSAVE命令创建快照。

save 60 10000
#在60秒(1分钟)之后,如果至少有10000个key发生变化,Redis就会自动触发BGSAVE命令创建快照。
【3】对比
save异步读写,不消耗额外内存,阻塞客户端指令,不启动新进程
bgsave同步读写,消耗额外内存,不阻塞客户端,启动新进程

  • AOF(只追加文件append-only file)

(1)简介:将数据的操作过程进行保存,日志形式,存储操作过程,存储格式复杂,关注点在数据的操作过程,已成为主流的持久化方案。
(2)启动方式:可以通过 appendonly 参数开启
appendonly yes
(3)三种策略:
【1】 always(每次)
每次写入操作均同步到AOF文件中,数据零误差,性能较低
【2】everysec(每秒)
每秒将缓冲区中的指令同步到AOF文件中,数据准确性较高,性能较高,在系统突然宕机的情况下丢失1秒内的数据
【3】no(系统控制)
由操作系统控制每次同步到AOF文件的周期,整体过程不可控
为了兼顾数据和写入性能,用户可以考虑 appendfsync everysec 选项 ,让 Redis 每秒同步一次 AOF 文件,Redis 性能几乎没受到任何影响。而且这样即使出现系统崩溃,用户最多只会丢失一秒之内产生的数据。当硬盘忙于执行写入操作的时候,Redis 还会优雅的放慢自己的速度以便适应硬盘的最大写入速度。
(3)AOF重写(指令:bgrewriteaof)
AOF文件重写是将Redis进程内的数据转化为写命令同步到新AOF文件的过程。简单说就是将对同一个数据的若干个条命令执行结果转化成最终结果数据对应的指令进行记录。AOF 重写可以产生一个新的 AOF 文件,这个新的 AOF 文件和原有的 AOF 文件所保存的数据库状态一样,但体积更小。

AOF 重写是一个有歧义的名字,该功能是通过读取数据库中的键值对来实现的,程序无须对现有 AOF 文件进行任何读入、分析或者写入操作。

在执行 bgrewriteaof 命令时,Redis 服务器会维护一个 AOF 重写缓冲区,该缓冲区会在子进程创建新 AOF 文件期间,记录服务器执行的所有写命令。当子进程完成创建新 AOF 文件的工作之后,服务器会将重写缓冲区中的所有内容追加到新 AOF 文件的末尾,使得新旧两个 AOF 文件所保存的数据库状态一致。最后,服务器用新的 AOF 文件替换旧的 AOF 文件,以此来完成 AOF 文件重写操作
(4)AOF重写的作用
降低磁盘占用量,提高磁盘利用率
提高持久化效率,降低持久化写时间,提高IO性能
降低数据恢复用时,提高数据恢复效率
(5)RDB与AOF对比
【1】存储空间占用:RDB小(数据级,压缩),AOF大(指令级,重写)
【2】存储速度:RGB慢,AOF快
【3】恢复速度:RGB快,AOF慢
【4】数据安全性:RGB会丢失,AOF依据策略决定
【5】资源消耗:RGB重量级,AOF轻量级
【6】启动优先级:RGB低,AOF高

持久化的应用场景

1、redis 应用于抢购,限购类、限量发放优惠卷、激活码等业务的数据存储设计
2、redis 应用于具有操作先后顺序的数据控制
3、redis 应用于最新消息展示
4、redis 应用于基于黑名单与白名单设定的服务控制
5、redis 应用于计数器组合排序功能对应的排名

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值