IBM Cloud Docs
将 Redis 配置为高速缓存

将 Redis 配置为高速缓存

IBM Cloud® Databases for Redis 支持更改 Redis 数据库配置,您可以使用它将 Redis 配置为高速缓存。 配置为高速缓存时,Redis 会根据您定义的高速缓存设置来逐出旧数据,以支持新数据。 即使配置为高速缓存,Databases for Redis 部署仍会生成每日备份快照。 当前无法在部署上禁用备份。 它们还会将一些数据写入磁盘以实现高可用性。 Redis 依赖于通过 .rdb 文件复制到再同步追随者。

高速缓存设置

要配置高速缓存,请调整部署的 maxmemorymaxmemory 设置。maxmemory 定义高速缓存的大小。 maxmemory-policy 定义达到 maxmemory 限制时的逐出行为。 此外,其他设置将负责数据库操作和调整。

maxmemory

缺省情况下,maxmemory 设置为数据节点可用内存的 80%,因此您的节点不会耗尽系统资源。 您可以调整此设置,但设置合理的限制。 否则,您的数据可能会占用所有可用内存,并且您的部署将耗尽资源。

maxmemory-policy

可用的Redis驱逐策略
策略 行为
noeviction 当达到 maxmemory 限制时,不逐出键并返回错误。
allkeys-lfu 保留常用密钥,并除去最不常用的 (LFU) 密钥。
volatile-lfu 除去到期字段设置为 true 时使用频率最低的密钥。
allkeys-lru 首先会显示最近较少使用的 (LRU) 密钥。
volatile-lru 从先到期的密钥集合中逐出最近较少使用的 (LRU) 密钥。
allkeys-random 随机地描述密钥。
volatile-random 从到期的密钥集中随机抽取密钥。
volatile-ttl 将到期的密钥逐出,并尝试先以较短的生存时间 (TTL) 逐出密钥。

使用 allkeys 策略时,算法会选择要从所有密钥集中逐出的密钥。 通过 volatile 策略,算法选择将已 到期 或设置了 生存时间(TTL) 的密钥逐出。 在 volatile 策略中,如果没有与策略匹配的密钥,那么不会逐出任何密钥。

其他设置

Redis缓存设置
策略 行为 注释
appendonly 默认值,'yes. 允许将 Redis 数据写入磁盘。 如果要对数据进行高速缓存,那么要将此值设置为 no
stop-writes-on-bgsave-error 默认值,'yes. 如果 Redis 检测到备份快照失败,那么它将停止接受写入操作。 对于高速缓存,可以设置为 no
maxmemory-samples 调整 LRU 算法,缺省值为 5 近似值 LRU 算法

设置示例高速缓存

要调整部署的配置,请发送包含要更改的设置及其新值的 JSON 对象。

您可以直接从 Redis cli-client 使用 CONFIG SET,但所作的更改不是永久的。 使用 "Cloud Databases、"CLI 插件 或 "应用程序接口 更改部署的配置文件。 更改 Redis 配置 中提供了更多信息。

例如,Redis 文档建议将 allkeys-lru 设置作为通用高速缓存的良好起始位置。 还可以将 maxmemorymaxmemory-samples 保留为它们的缺省值。

通过 CLI 配置缓存的方法如下:

ibmcloud cdb deployment-configuration '<INSTANCE_NAME_OR_CRN>' '{"configuration":{"maxmemory-policy":"allkeys-lru", "appendonly":"no", "stop-writes-on-bgsave-error":"no"}}'

通过 API 设置相同的配置,可以使用以下方法:

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":"allkeys-lru",
        "appendonly":"no",
        "stop-writes-on-bgsave-error":"no"
      }
    }'