配置为持久性
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 快照。
- 请按照 以下步骤 配置 Databases for Redis 实例。
- 通过验证 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" } }'