Mise en mémoire cache personnalisée
HCL Cache étend les capacités de DynaCache et introduit la mise en cache à distance. Dès lors, d'autres options de configuration sont disponibles pour les caches personnalisés. Les caches personnalisés peuvent être configurés à l'aide du fichier Yaml de configuration de cache pour les extensions.
Les caches personnalisés sont déclarés dans la configuration WebSphere et accessibles à l'aide de l'interface DistributedMap. Le code de mise en cache personnalisé migré ne nécessite pas de modification pour utiliser leHCL Cache.
La taille d'un cache est utilisée comme point de départ pour la mise en cache locale. Le déchargement du disque n'est pas disponible, aussi la mise en cache --remote est recommandée. Pour plus de détails, voir Mise en cache locale et distante.
Enregistrement de caches personnalisés dans la configuration WebSphere
- Conteneur du serveur de transactions
- Lorsque des caches personnalisés sont ajoutés avec la commande run-engine Commandes Run Engine du serveur de transactions, ils sont mappés automatiquement par défaut au fournisseur de cache HCL Cache.
- Conteneurs Liberty
- Les caches personnalisés définis dans le répertoire configDropins/overrides doivent spécifier explicitement la valeur HCL Cache cacheProviderName comme dans l'exemple ci-dessous :
<?xml version="1.0" encoding="UTF-8"?> <server> <distributedMap id="services/cache/CustomCache1" memorySizeInEntries="2000" memorySizeInMB="100" cacheProviderName="hcl-cache"/> </server>
Configurations des options HCL Cache
cacheConfigs:
...
services/cache/MyCustomCache:
remoteCache:
enabled: true
localCache:
enabled: false- Utilisation de HCL Cache pour le stockage des données en mémoire
- Le HCL Cache est traditionnellement utilisé pour les scénarios de mise en cache, où les entrées peuvent être régénérées par l'application si elles sont introuvables dans le cache. Avec l'incorporation du cache distant qui permet le stockage de grandes quantités de données, le HCL Cache peut également être utilisé comme base de données temporaire en mémoire. Dans sa configuration par défaut, le HCL Cache implémente des processus de maintenance qui suppriment les entrées de cache si nécessaire pour éviter les conditions de mémoire faible. Cela peut entraîner la perte d'entrées de cache.Si les objets stockés dans le cache ne peuvent pas être régénérés, le processus Maintenance de mémoire faible pour le cache spécifique doit être désactivé pour éviter la perte de données :
services/cache/MyCustomCache: remoteCache: onlineLowMemoryMaintenance: enabled: falseLa maintenance de mémoire faible peut continuer à fonctionner sur d'autres caches. Si les caches qui désactivent la maintenance de mémoire faible nécessitent une quantité de mémoire significative, la mémoire mise à disposition (maxmemory) peut nécessiter un nouveau réglage. Les options Persistance Redis peuvent également devoir être mises à jour vers une configuration plus durable (par exemple, activer AOF et RDB)
Accès à un cache à l'aide de l'interface DistributedMap
// 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();