HCL Commerce Version 9.1.10.0 or later

Gestión de memoria en Redis

Redis es la base de datos elegida para devolver los sistemas de memoria caché. Utiliza un modelo de gestión de memoria que soporta LRU (menos utilizado recientemente) y otros algoritmos para desalojar claves para permitir nuevos datos cuando la memoria está llena.

HCL Cache tiene requisitos que van más allá de una base de datos de clave-valor simple. Para dar soporte a estos requisitos, como la invalidación por dependencia, la memoria caché debe mantener conjuntos de metadatos para cada clave. No se debe permitir que Redis desaloje información de metadatos, ya que esto crea incoherencias en la memoria caché, como entradas que no se invalidan. Para mantener metadatos, HCL Cache implementa un conjunto de procesos de mantenimiento.

Configuraciones de memoria de Redis

Las configuraciones siguientes deben estar en su lugar para que Redis se utilice con HCL Cache.
maxmemory
La cantidad de memoria disponible para claves (datos almacenados en memoria caché).
maxmemory-policy
Debe establecerse en volatile-lru, que elimina las claves utilizadas menos recientemente con el campo expire establecido en true.

Con Redis Enterprise, maxmemory no se utiliza. En su lugar, las memorias caché se mantienen utilizando el número de entradas. Consulte softMaxSize.

HCL Cache objetos en Redis

Objeto Utilización Conjunto de caducidad
{}-data-* Clave HASH que contiene los datos almacenados en memoria caché y metadatos adicionales, como la hora de creación, dependencias y otros
{}-dep-* Clave SET para cada ID de dependencia. El conjunto contiene una lista de todos los ID de memoria caché que están asociados a este ID de dependencia. NO
{}-maintenance ZSET por tiempo de caducidad que contiene claves de memoria caché y sus dependencias NO
{}-inactive ZSET por tiempo de creación utilizado para el mantenimiento de inactividad (9.1.10+) NO

Los datos almacenados en memoria caché ({}-data-) siempre deben tener un conjunto de caducidad establecido y Redis puede desalojarlos cuando se agote la memoria disponible. La información de metadatos ({}-dep-,-maintenance,-inactive) no tiene caducidad y, por lo tanto, Redis no puede desalojarla. Debe mantenerse mediante procesos HCL Cache de mantenimiento.

HCL Cache procesos de mantenimiento

Para tratar con metadatos, HCL Cache implementa los siguientes procesos de mantenimiento. Para obtener más detalles, consulte: Mantenimiento de memoria caché.

Mantenimiento caducado
Cuando una clave caduca, Redis la elimina automáticamente de la memoria. El trabajo de mantenimiento caducado es responsable de eliminar referencias de los metadatos a la clave caducada.
Low-memorymaintenance
Cuando la memoria utilizada alcanza el 100% de maxmemory, Redis inicia el desalojo de claves. Las pruebas han demostrado que las condiciones de memoria completa pueden dar lugar a errores como "mandato no permitido cuando la memoria utilizada > 'maxmemory'". Para evitar esta situación, HCL Cache supervisa uso de memoria y desencadena trabajos para reducir el tamaño de cada memoria caché, antes de que se agote la memoria disponible. Los trabajos eliminan las entradas de memoria caché y los metadatos asociados. Las entradas de memoria caché seleccionadas para su eliminación son aquellas que caducan antes.
Mantenimiento inactivo
Este trabajo no es necesario para el mantenimiento de memoria, pero ayuda a reducir los requisitos de memoria eliminando entradas de memoria caché desocupada. Su diseño es muy similar al del mantenimiento caducado, pero para entradas de memoria caché que todavía no han caducado.