IBM Cloud Docs
配置为持久性

配置为持久性

Redis 是公认的高性能键值数据库,其显著特点是将所有数据存储在 RAM 中,以避免缓慢的磁盘访问。 不过,鉴于 RAM 的易失性,这种以 RAM 为中心的方法在 Redis 进程或主机发生事故时会带来数据丢失的风险。 为了解决这个问题,Redis 提供了在磁盘上持久保存数据的机制。

中的持久模式 Redis

有两种主要的持久性模式可供选择:RDB(快照模式)和 AOF(强持久性)。 每种模式都需要在性能和可靠性方面做出不同的权衡。 因此,在 Redis 中选择适当的持久性模式需要做出战略决策。

RDB 快照

Redis 将数据集快照保存在磁盘上的二进制文件 中。dump.rdb 如果至少有 M 次更改,则每 N 秒保存一次数据集。

  • 保存 3600 1:如果至少有一个键发生变化,则每小时保存一次。
  • 保存 300 100:如果至少有 100 个按键发生变化,则每 5 分钟保存一次。
  • 保存 60 10000:每分钟至少更改 10 000 个按键。

AOF(仅附加文件)

启用 AOF 后,Redis 通过记录服务接收到的每个写操作来持久保存数据。 AOF 由 fsync 策略配置,可确保数据的持久性。

  • 始终如此:最安全,但性能最低。
  • Everysec(默认):安全且性能更佳。
  • 否:通常依靠操作系统决定何时执行 fsync,时间通常在 30 秒左右(不安全,但能提供最佳性能)。

更多信息,请参阅 Redis 持久性

中设置持久性 Databases for Redis

在 IBM Cloud® Databases for Redis 部署中,RDB 快照和 AOF 默认在配置时启用,数据会写入磁盘。 不过,用户可以 禁用 AOF,将 Databases for Redis 用作缓存,从而减轻 IOPS 负载,提高性能。

Databases for Redis 在高可用性环境中运行,不能禁用 RDB 快照。

  1. 请按照 以下步骤 配置 Databases for Redis 实例。
  2. 通过验证 Databases for Redis 配置来检查持久性设置。 使用 Redis CLI 访问 ICD Redis 实例。

默认情况下,AOF 设置为 “是”,因此 Databases for Redis 被配置为每秒通过 fsync 和 RDB 快照进行 AOF 持久化。

如果想将 Redis 用作缓存,可以关闭 AOF。 这还能提高数据库的可用性,因为 Redis 进程在发生故障切换时无需重放事务日志。 更多信息,请参阅 将 Redis 配置为缓存

将 Databases for Redis 重新配置为持久设置

要配置对 Databases for Redis 实例的更改,必须使用 IBM Cloud CLI 或 API 来配置持久性,如下例所示。

调整以下设置:

  • appendonly 设置为 “是”, 以启用 AOF 持久性。
  • 确保 maxmemory-policy 设置为 noeviction,以防止密钥过期。
  • stop-writes-on-bgsave-error 设置为是, 以便在备份出错时停止写入。

CLI 示例

ibmcloud cdb deployment-configuration '<deployment name or CRN>' '{"configuration":{"maxmemory-policy":" noeviction", "appendonly":"yes", "stop-writes-on-bgsave-error":"yes"}}'

应用程序接口示例

curl -X PATCH 'https://api.{region}.databases.cloud.ibm.com/v4/ibm/deployments/{id}/configuration/schema' -H "Authorization: Bearer $APIKEY" -H "Content-Type: application/json" -d '{"configuration":{ "maxmemory-policy":""noeviction, "appendonly":"yes", "stop-writes-on-bgsave-error":"yes" } }'