HCL Commerce Version 9.1.10.0 or later

Memoria caché personalizada

HCL Cache amplía las prestaciones de DynaCache e introduce almacenamiento en memoria caché remota. Por lo tanto, existen opciones de configuración adicionales para las memorias caché personalizadas. Las memorias caché personalizadas se pueden configurar utilizando el archivo Yaml de configuración de memoria caché para extensiones.

Las memorias caché personalizadas se declaran en la configuración de WebSphere y se acceden a ellas con la interfaz DistributedMap . El código de almacenamiento en memoria caché personalizado migrado no requiere modificación para utilizar HCL Cache.

El tamaño de una memoria caché se utiliza como punto de partida para el almacenamiento en memoria caché local. En su lugar, se recomienda la opción de descarga de disco no está disponible --remote en el almacenamiento en memoria caché. Consulte Almacenamiento en memoria caché local y remota para obtener detalles.

Registro de memorias caché personalizadas en la configuración WebSphere

Contenedor de servidor de transacción
Cuando se añaden memorias caché personalizadas con el mandato ejecutar motor del servidor de transacción , de forma predeterminada se correlacionan automáticamente con el HCL Cache proveedor de memoria caché.
Contenedores Liberty
Las memorias caché personalizadas definidas en el directorio configDropins/overrides deben especificar explícitamente HCL Cache cacheProviderName como en el ejemplo siguiente:
<?xml version="1.0" encoding="UTF-8"?>
<server>
   <distributedMap id="services/cache/CustomCache1" memorySizeInEntries="2000" memorySizeInMB="100" cacheProviderName="hcl-cache"/>
</server>

Configurar HCL Cache opciones

Las memorias caché personalizadas se pueden configurar con opciones no predeterminadas, tal como se describe en el documento Configuraciones de memoria caché . Por ejemplo, una memoria caché personalizada denominada services/ cache/ MyCustomCache se puede configurar para utilizar el almacenamiento en memoria caché solo remota añadiendo una nueva configuración en cache_cfg-ext.yaml bajo el elemento cacheConfigs :
cacheConfigs:
  ...
  services/cache/MyCustomCache:
    remoteCache:
      enabled: true  
    localCache:
      enabled: false
Utilización de para almacenamiento HCL Cache de datos en memoria
HCL Cache se utiliza tradicionalmente para escenarios de almacenamiento en memoria caché, donde si no se encuentran entradas en la memoria caché, la aplicación las puede volver a generar. Con la incorporación de la memoria caché remota que permite grandes cantidades de almacenamiento de datos, HCL Cache también se puede utilizar como base de datos en memoria temporal. En su configuración predeterminada, HCL Cache implementa procesos de mantenimiento que eliminan entradas de memoria caché cuando es necesario para evitar condiciones de falta de memoria. Esto podría dar lugar a la pérdida de entradas de memoria caché.
Si los objetos almacenados en la memoria caché no se pueden regenerar, el proceso de mantenimiento de memoria baja para la memoria caché específica debe inhabilitarse para evitar la pérdida de datos:
services/cache/MyCustomCache:
remoteCache:
onlineLowMemoryMaintenance:
enabled: false

El mantenimiento de memoria baja puede seguir funcionando en otras memorias caché. Si las memorias caché que inhabilitan el mantenimiento de memoria baja requieren una cantidad significada de memoria, es posible que sea necesario volver a ajustar la memoria disponible (maxmemory). Es posible que también sea necesario actualizar las opciones de persistencia de Redis a una configuración más duradera (por ejemplo, habilitar AOF y RDB)

Acceso a una memoria caché con la interfaz DistributedMap

Al igual que en versiones anteriores, se puede acceder a las memorias caché personalizadas utilizando la interfaz DynaCache DistributedMap de IBM WebSphere, como en el ejemplo siguiente:
//  Obtain cache reference using JNDI name
InitialContext ctx = new InitialContext();
DistributedMap myCustomCache = (DistributedMap) 
ctx.lookup("services/cache/MyCustomCache");

// insert into the cache
myCustomCache.put("cacheId", myCacheEntryObject )

final int priority = 1;
// the time in seconds that the cache entry should remain in the cache. The default value is -1 and means the entry does not time out.
final int timeToLive     =  1800;
// the time in seconds that the cache entry should remain in the local cache if not accessed.
final int inactivityTime = 900
// Not supported
final int sharingPolicy = 0;
final String [] dependencyIds = new String [] {"dependencyId1", "dependencyId2"};

myCustomCache.put("cacheId", myCacheEntryObject, priority, timeToLive, inactivityTime, sharingPolicy, dependencyIds );

// Read an object from cache
Object cachedObject = myCustomCache.get("cacheKey");

// Invalidate by dependency id
myCustomCache.invalidate("dependencyId1");

// Empty cache
myCustomCache.clear();