

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 管理 Valkey 和 Redis OSS 的预留内存
<a name="redis-memory-management"></a>

每种主机类型都有专用于Valkey和的内存量Redis OSS。这是宣传的内存。该`reserved-memory-percent`参数将部分内存留出来用于非数据用途：
+ 副本上的客户端输出缓冲区
+ 内存因碎片而丢失
+ Copy-on-write 分叉的 bgsave 使用的内存

该`maxmemory`值等于通告的内存减去预留的内存。例如，如果广告的内存为 13.5 GB，预留的内存为 25%，`maxmemory`则约为 10.1 GB。

**重要**  
`reserved-memory-percent`默认为 25%。不要降低此值。较低的预留空间可能会导致数据丢失，尤其是在升级或对集群进行其他更改期间。

**Topics**
+ [要预留多少内存](#redis-memory-management-how-much)
+ [配置预留内存](#redis-memory-management-configure)

## 要预留多少内存
<a name="redis-memory-management-how-much"></a>

该`reserved-memory-percent`参数默认为 25%。不要降低此值。但是，在某些情况下，增加内存储备可以使您受益。

微型和小型实例  
微型和小型实例的大小均适用于轻度活动，没有复制负担。为了提高这些实例在生产工作负载中的运行可靠性，将小型实例的内存预留增加到 30%，将微型实例的内存预留增加到 50%。

强制分叉的 bgsave 或完全同步  
在传统的分叉bgsave或完全同步期间，Redis OSS内存使用量可能会增加一倍（或更多），具体取决于流量负载Valkey和模式。`FreeableMemory`如果不足以运行传统的分叉操作，亚马逊 ElastiCache 会自动切换到无分叉保存机制。这种无分叉机制使用的内存要少得多，但会增加客户端延迟——尤其是对于非常大的 key/value 项目。如果这些延迟对您的用例有影响，请增加内存储备，以确保有足够的内存用于传统的分叉存储。

如果得到 AWS 支持人员的指示  
不寻常的流量模式或要求可能会导致独特的内存需求。`reserved-memory-percent`如果由 AWS 支援指导，则增加。

## 配置预留内存
<a name="redis-memory-management-configure"></a>

该`reserved-memory-percent`参数特定于 ElastiCache。它不是 Valkey 或 Redis OSS 开源代码的一部分。要更改此值，请使用自定义参数组。您无法修改默认参数组。

如果 25% 对你有效，则无需进行任何更改。要使用其他值，请执行以下步骤。

**更改预留内存百分比值**

1. 运行以下 AWS CLI 命令创建自定义参数组。将系列设置为与您的引擎版本相匹配。有关创建参数组的更多信息，请参阅[创建 ElastiCache 参数组](ParameterGroups.Creating.md)。

   ```
   aws elasticache create-cache-parameter-group \
      --cache-parameter-group-name {{my-parameter-group}} \
      --description "{{Custom reserved memory settings}}" \
      --cache-parameter-group-family {{redis7}}
   ```

   每个引擎系列只需要一个自定义参数组。

1. 设置`reserved-memory-percent`为你想要的值。有关修改参数组的更多信息，请参阅 [修改 ElastiCache 参数组](ParameterGroups.Modifying.md)。

   ```
   aws elasticache modify-cache-parameter-group \
      --cache-parameter-group-name {{my-parameter-group}} \
      --parameter-name-values "ParameterName=reserved-memory-percent, ParameterValue={{30}}"
   ```

1. 将自定义参数组应用到您的集群或复制组。

   要修改集群，请运行以下 AWS CLI 命令。有关修改集群的更多信息，请参阅[修改集 ElastiCache 群](Clusters.Modify.md)。

   ```
   aws elasticache modify-cache-cluster \
      --cache-cluster-id {{my-cluster}} \
      --cache-parameter-group-name {{my-parameter-group}} \
      --apply-immediately
   ```

   要修改复制组，请运行以下 AWS CLI 命令。有关修改复制组的更多信息，请参阅[修改复制组](Replication.Modify.md)。

   ```
   aws elasticache modify-replication-group \
      --replication-group-id {{my-replication-group}} \
      --cache-parameter-group-name {{my-parameter-group}} \
      --apply-immediately
   ```