搬瓦工 做网站,psd资源下载网站模板,綦江集团网站建设,深圳公布最新出行政策有道无术#xff0c;术尚可求#xff0c;有术无道#xff0c;止于术。 本系列Redis 版本 7.2.5 源码地址#xff1a;https://gitee.com/pearl-organization/study-redis-demo 文章目录 1. 概述2. 案例演示2.1 无持久化2.2 RDB2.3 AOF2.4 混合模式2.4.1 方式一#xff1a;… 有道无术术尚可求有术无道止于术。 本系列Redis 版本 7.2.5 源码地址https://gitee.com/pearl-organization/study-redis-demo 文章目录 1. 概述2. 案例演示2.1 无持久化2.2 RDB2.3 AOF2.4 混合模式2.4.1 方式一 同时开启2.4.2 方式二 只开启 AOF 1. 概述
持久化官方文档
在前两篇文档中我们学习了RDB、AOF的相关知识它们各有优缺点。在实际应用中需要根据场景选择适合的持久化策略。
Redis 支持以下四种方式
无持久化同时关闭RDB、AOFRDB只开启RDBAOF只开启AOF混合模式同时支持RDB、AOF
2. 案例演示
2.1 无持久化
适用于以下场景
缓存层作为数据库查询缓存时如果数据丢失可以重新获取并填充到缓存中持久化不是必需的。实时分析在实时数据流处理或分析中Redis 可能被用作一个中间存储层用于聚合、过滤或转换数据。由于这些数据通常是实时生成的并且只在一段时间内需要因此可能不需要持久化。一旦分析完成或数据过期它们就可以被丢弃。临时存储在某些应用中Redis 可能被用作临时存储来存储会话数据、临时令牌或其他短生命周期的信息。由于这些数据本质上是临时的并且在一段时间后会被丢弃或失效因此可能不需要持久化。
在redis.conf中同时关闭RDB、AOF
save
appendonly no注意关闭后是依然可以使用save、bgsave、bgrewriteaof命令生成文件。
默认启用RDB所以在安装目录可以看到 dump.rdb 文件 将 dump.rdb 文件删除然后启动 Redis 虽然之前存入了数据但是因为没有恢复文件所以数据库是空 重新存入数据后由于禁用了 RDB 所以不会生成dump.rdb 文件一旦重新启所有数据将会丢失。
2.2 RDB
Redis 默认启用RDB持久化只生成单个二进制文件比AOF性能更好但是可能会存在数据丢失问题。Redis 本身是十分稳定的适用于对数据一致性要求不是特别高的场景
主从复制Redis主从复制架构中RDB被用作数据同步的一种机制。主节点可以生成RDB文件然后发送给从节点用于初次全量复制或连接重建时的快速同步。恢复和备份RDB 文件是一个紧凑的二进制文件可以很方便地进行备份、传输和恢复。缓存层作为数据库缓存时如果数据丢失可以重新获取并填充到缓存中。
在redis.conf中开启RDB
# 关闭
# save
# 开启每隔600秒10分钟检查一次如果在这段时间内至少发生了10次写操作则执行一次RDB快照保存
save 600 10存入数据后关闭Redis 时会触发生成RDB 文件。重启时会重新加载到内存中。执行多次写入操作可以看到触发了保存规则开启了子线程进行RDB生成 总结可以接受在灾难情况下丢失几分钟的数据。
2.3 AOF
AOF 相较于 RDB 其主要缺点就是性能不如 RDB 适用于数据一致性要求较高的场景。默认情况下是关闭的需要在redis.conf中主动开启
# 关闭 RDB
save
# 开启AOF
appendonly yes重启 Redis 后在控制台可以看到创建了AOF 的基础文件和增量文件 在 appendonlydir 默认存储目录下可以看到相关文件
2.4 混合模式
RDB、AOF 各有特点在技术选型时是一个权衡点其特点对比如下
RDBAOF持久化机制定期保存快照实时命令追加文件大小二进制文件体积较小文本、二进制文件体积较大恢复速度原生压缩数据速度快写命令数据相对较慢容灾能力数据可能有丢失数据可能有丢失(最后一条命令或最后一秒)使用场景定期备份、大规模数据恢复低/轻量级资源消耗高/重量级数据丢失容忍度低启动优先级低高
在官方文档中有提到如果想要获得与 PostgreSQL 级别的数据安全性应该同时使用两种持久化方式。
2.4.1 方式一 同时开启
在配置文件中同时开启RDB、AOF持久化
# 开启RDB
save 600 10
# 开启AOF
appendonly yes当触发了规则后会同时生成RDB、AOF文件 同时开启的条件下重启时会优先读取AOF文件 这种方式下同时维护两套持久化机制对性能会造成一定的影响。
2.4.2 方式二 只开启 AOF
AOF 本身已经提供了混合持久化机制在Redis 7.x 系列【16】持久化机制之 AOF中有介绍过一个配置参数
aof-use-rdb-preamble yes在 Redis 6 中开启此配置后默认开启重写 的AOF 文件由两个不同的部分组成
RDB file数据快照AOF tail记录写操作
在重启加载过程中Redis 会识别 AOF 文件以 “REDIS” 字符串开头并加载 RDB 快照数据然后继续加载 AOF 相关的内容以实现更快的重写和恢复速度。
在 Redis 7 中开启此配置后默认开启在 AOF 重写时会将当前时刻的数据快照保存为单个的 RDB 文件后续的写操作也保存为单独的 AOF 文件 在全量备份时这里的 RDB 文件可以作为恢复文件无需再单独执行 BGSAVE 命令由于是在触发重写后才会更新文件可能会丢失重写后的数据。