Administración de memoria

Directiva de expulsión

Elija una directiva de expulsión que funcione para su aplicación. La directiva predeterminada de Azure Cache for Redis es volatile-lru, lo que significa que solo las claves que tienen un valor de TTL establecido con un comando como EXPIRE se podrán usar en la expulsión. Si ninguna de las claves tiene un valor de TTL, el sistema no expulsará ninguna clave. Si quiere que el sistema permita que se expulse cualquier clave si está bajo presión de memoria, puede usar la directiva allkeys-lru.

Expiración de claves

Establezca un valor de expiración en sus claves. Una expiración quitará las claves de forma proactiva en lugar de esperar hasta que haya presión de memoria. Cuando la expulsión ocurre debido a la presión en la memoria, puede causar más carga en el servidor. Para más información, consulte la documentación de los comandos Expire y EXPIREAT.

Minimización de la fragmentación de memoria

Los valores grandes pueden dejar la memoria fragmentada durante la expulsión y provocar un uso elevado de la memoria y la carga del servidor.

Supervisión del uso de la memoria

Agregue supervisión sobre el uso de memoria para asegurarse de que no se queda sin memoria y tiene la oportunidad de escalar la memoria caché antes de ver problemas.

Configuración de la opción maxmemory-reserved

Configure la opción maxmemory-reserved para mejorar la capacidad de respuesta del sistema en situaciones de presión de memoria.

  • Una configuración de reserva suficiente es especialmente importante para las cargas de trabajo con muchas operaciones de escritura o si almacena valores mayores de 100 KB en la caché. De forma predeterminada, cuando se crea una memoria caché, aproximadamente el 10 % de la memoria disponible se reserva para maxmemory-reserved. Otro 10 % está reservado para maxfragmentationmemory-reserved. Puede aumentar la cantidad reservada si tiene cargas con muchas operaciones de escritura.

  • La opción maxmemory-reserved configura la cantidad de memoria (en MB por instancia en un clúster) que se reserva para las operaciones ajenas a la memoria caché, como la replicación durante la conmutación por error. Esta opción le permite tener una experiencia más coherente de servidor Redis cuando varía la carga. Este valor debe establecerse más alto para las cargas de trabajo que escriben grandes cantidades de datos. Cuando se reserva memoria para dichas operaciones, no está disponible para el almacenamiento de los datos en la caché. El intervalo permitido para maxmemory-reserved es del 10 al 60 % de maxmemory. Si intenta establecer estos valores por debajo del 10 % o por encima del 60 %, se vuelven a evaluar y se establecen en un mínimo del 10 % y máximo del 60 %. Los valores se representan en megabytes.

  • La opción maxfragmentationmemory-reserved configura la cantidad de memoria (en MB por instancia en un clúster) que se reserva para adaptarse a la fragmentación de memoria. Si se establece este valor, la experiencia del servidor Redis es más coherente cuando la caché está llena o prácticamente llena, y la proporción de fragmentación es elevada. Cuando se reserva memoria para dichas operaciones, no está disponible para el almacenamiento de los datos en la caché. El intervalo permitido para maxfragmentationmemory-reserved es del 10 al 60 % de maxmemory. Si intenta establecer estos valores por debajo del 10 % o por encima del 60 %, se vuelven a evaluar y se establecen en un mínimo del 10 % y máximo del 60 %. Los valores se representan en megabytes.

  • Al elegir un nuevo valor de reserva de memoria (maxmemory-reserved o maxfragmentationmemory-reserved), hay que tener en cuenta cómo podría afectar este cambio a una memoria caché que ya se está ejecutando con grandes cantidades de datos en ella. Por ejemplo, si tiene una memoria caché de 53 GB con 49 GB de datos, al cambiar el valor de reserva a 8 GB, la memoria máxima disponible para el sistema caerá a 45 GB. Si los valores actuales de used_memory o used_memory_rss son mayores que el nuevo límite de 45 GB, entonces el sistema tendrá que expulsar datos hasta que used_memory y used_memory_rss estén por debajo de 45 GB. La expulsión puede aumentar la carga del servidor y la fragmentación de memoria. Para obtener más información sobre métricas de caché como used_memory y used_memory_rss, consulte Crear sus propias métricas.

Nota

Al escalar o reducir verticalmente una memoria caché, los valores de maxmemory-reserved y maxfragmentationmemory-reserved se escalan automáticamente en proporción al tamaño de la memoria caché. Por ejemplo, si maxmemory-reserved se establece en 3 GB en una caché de 6 GB y se escala a una caché de 12 GB, la configuración se actualiza automáticamente a 6 GB durante el escalado. Al reducir verticalmente, ocurre lo contrario. Al escalar o reducir verticalmente una caché mediante programación usando PowerShell, CLI o la API REST, se omite maxmemory-reserved o maxfragmentationmemory-reserved como parte de la solicitud de actualización. Solo se respeta el cambio de escalado. Puede actualizar esta configuración de memoria una vez completada la operación de escalado.

Pasos siguientes