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 paramaxfragmentationmemory-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 paramaxmemory-reserved
es del 10 al 60 % demaxmemory
. 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 paramaxfragmentationmemory-reserved
es del 10 al 60 % demaxmemory
. 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
omaxfragmentationmemory-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 deused_memory
oused_memory_rss
son mayores que el nuevo límite de 45 GB, entonces el sistema tendrá que expulsar datos hasta queused_memory
yused_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é comoused_memory
yused_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.