已编辑 2 几个月前 通过 ExtremeHow 编辑团队
翻译更新 2 几个月前
Redis 是一种内存键值数据存储,广泛用于缓存、会话管理和实时分析。Redis 操作的关键方面之一是持久化。在 Redis 的上下文中,持久化是关于确保数据在意外故障中保持持久性。虽然 Redis 主要是一个内存数据库,但其持久化层有助于确保数据在内存不稳定时的可用性。Redis 具有两种主要的持久化选项:RDB(Redis 数据库备份)和 AOF(仅追加文件)。以下是有效配置 Redis 持久化的详细指南,探讨每个选项并提供对其工作原理的全面理解。
在进行配置之前,了解 Redis 提供的两个主要持久化选项非常重要:
RDB 是 Redis 数据库备份的缩写。这种形式的持久化在指定的时间间隔创建内存数据集的快照。快照作为二进制文件保存在磁盘上。RDB 的主要优点是易于使用,并且可以快速从这些快照中恢复数据集。然而,缺点是如果 Redis 崩溃,则未保存到最近快照的数据将丢失。
与 RDB 一样,您可以配置 Redis 在指定的时间间隔内或根据数据集更改的频率自动拍摄快照。快照文件可以移动到不同的服务器进行备份,提供了额外一层的数据保护。
AOF 是仅追加文件的缩写。与 RDB 的定期快照不同,AOF 记录服务器接收到的每个写入操作。这会追加到一个文件中,该文件可以在需要时用于重建数据集。AOF 比 RDB 提供更好的耐久性,因为它更频繁地将更改写入磁盘。
使用 AOF,您可以通过各种配置选项控制磁盘写入的频率。仅追加文件比 RDB 快照大,但它们提供了更详细的数据恢复优势。
要配置 Redis 使用 RDB 持久化,您必须设置所需的快照策略。这通常在 redis.conf
文件中完成,这是 Redis 的主要配置文件。
默认情况下,Redis 配置文件通常位于 Linux 系统的 /etc/redis/redis.conf
,或安装 Redis 的其他位置。在您喜欢的文本编辑器中打开此文件。
在配置文件中,您将找到以下行:
save 900 1
save 300 10
save 60 10000
每行都指定 Redis 将创建数据集快照的条件。
save 900 1
:每 900 秒(15 分钟)保存数据集,如果至少有 1 个键已更改。save 300 10
:每 300 秒(5 分钟)保存数据集,如果至少有 10 个更改。save 60 10000
:每 60 秒保存数据集,如果至少有 10,000 个更改。您可以根据需要调整这些设置。例如,如果您希望每 10 分钟保存 5 个键的更改,请添加一行:save 600 5
。
更改后,保存配置文件并重新启动 Redis 服务器以应用更改。这是通过使用命令 sudo systemctl restart redis
或您用于管理系统服务的方法来完成的。
AOF 持久化通过记录每个写入操作提供了比 RDB 快照更高的数据保护。启用 AOF 持久化还需要对 redis.conf
文件进行一些调整。
在您的 redis.conf
文件中,找到以下行:
# appendonly no
简单地通过删除 #
来取消注释,并将 no
更改为 yes
,如下所示:
appendonly yes
AOF 持久化提供了几个配置选项:
always
:每次数据写入时立即刷新到磁盘。提供最大的数据安全性,但速度较慢。everysec
:每秒刷新数据到磁盘。在性能和数据保护之间提供良好的折衷。no
:让操作系统决定何时刷新数据,通常在 OS 级别实施缓存策略。redis.conf
中定义,可以通过以下方式切换:no-appendfsync-on-rewrite no
BGREWRITEAOF
。aof-rewrite-incremental-fsync yes
在增量百分比的基础上配置自动重写。与 RDB 一样,修改配置文件后,保存更改并重新启动 Redis 以应用它们:
sudo systemctl restart redis
您可以配置 Redis 同时使用 RDB 和 AOF 持久化。这种混合方法提供了快照的灵活性和追加写入的细粒度。在高可靠性需求的场景中,这是最佳实践。
要实现此目的,请确保您已按照之前所述配置 RDB 并启用 AOF:
appendonly yes appendfsync everysec
当同时使用这两种持久化方法时,在启动时,Redis 默认会优先从 AOF 加载数据,因为它通常具有最新的数据状态。
选择合适的持久化方法主要取决于特定的应用程序需求:
一旦配置了所需的持久化设置,重要的是充分测试并验证行为:
Redis 持久化是有效管理数据持久性的关键方面。通过了解和正确实现 RDB 和 AOF 或两者的组合,您可以确保在故障情况下数据保持安全。仔细平衡性能要求和数据安全要求将帮助您为您的用例决定最合适的选项。
与往常一样,定期备份,考虑您的整体系统架构,包括复制和集群等因素,以实现全面的数据保护。
如果你发现文章内容有误, 您可以