Compartir a través de


Administración de memoria

En este artículo se describen los procedimientos recomendados para la administración de memoria en Azure Cache for Redis.

Elija la política de expulsión adecuada

Elija una directiva de expulsión que funcione para la aplicación. La directiva predeterminada para Azure Cache for Redis es volatile-lru, lo que significa que solo las claves que tienen un valor de período de vida (TTL) establecido con un comando como EXPIRE son aptos para la expulsión. Si ninguna clave tiene un valor TTL, el sistema no expulsa ninguna clave. Si desea que el sistema permita que se expulse cualquier clave si está bajo presión de memoria, tenga en cuenta la allkeys-lru directiva.

Establecer una fecha de expiración de claves

La expulsión debido a la presión de memoria puede provocar más carga en el servidor. Establezca un valor de expiración en las claves para quitar las claves de forma proactiva en lugar de esperar hasta que haya presión de memoria. Para obtener más información, consulte la documentación de los comandos EXPIRE y EXPIREAT de Redis.

Minimización de la fragmentación de memoria

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

Supervisión del uso de la memoria

Supervise el uso de memoria para asegurarse de que no se agota la memoria. Cree alertas para ofrecerle la oportunidad de escalar la memoria caché antes de que se produzcan problemas.

Configuración de la opción maxmemory-reserved

Configure los valores de maxmemory-reserved para maximizar la capacidad de respuesta del sistema. La configuración de reserva suficiente es especialmente importante para cargas de trabajo con mucha escritura o si almacena valores de 100 KB o más en la memoria caché.

  • La maxmemory-reserved configuración configura la cantidad de memoria, en MB por instancia de un clúster, reservada para operaciones que no son de 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.

  • La maxfragmentationmemory-reserved configuración configura la cantidad de memoria, en MB por instancia de un clúster, reservada para dar cabida 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 la memoria está reservada para estas operaciones, no está disponible para almacenar datos almacenados en caché. De forma predeterminada, al crear una memoria caché, se reservan aproximadamente 10% de la memoria disponible para maxmemory-reservedy se reservan otros 10% para maxfragmentationmemory-reserved. Puede aumentar las cantidades reservadas si tiene cargas pesadas de escritura.

Los intervalos permitidos para maxmemory-reserved y para maxfragmentationmemory-reserved son 10%-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 %.

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. Si se reduce verticalmente, se produce la inversa.

Considere cómo cambiar el valor de reserva de memoria de un maxmemory-reserved o maxfragmentationmemory-reserved puede afectar una caché con una gran cantidad de datos que ya se está ejecutando. Por ejemplo, si tiene una caché de 53 GB con los valores reservados establecidos en los 10% mínimos, la memoria máxima disponible para el sistema es de aproximadamente 42 GB. Si el valor actual de used_memory o used_memory_rss es superior a 42 GB, el sistema debe expulsar datos hasta que ambos, used_memory y used_memory_rss, estén por debajo de 42 GB.

La expulsión puede aumentar la carga del servidor y la fragmentación de memoria. Para obtener más información sobre las métricas de caché como used_memory y used_memory_rss, consulte Creación de sus propias métricas.

Nota

Al escalar una caché hacia arriba o hacia abajo mediante programación usando Azure PowerShell, Azure CLI o REST API, se omite cualquier configuración maxmemory-reserved o maxfragmentationmemory-reserved incluida como parte de la solicitud de actualización. Solo se respeta el cambio de escalado. Puede actualizar la configuración de memoria una vez completada la operación de escalado.