es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cuál es la diferencia formal entre una Cache y un Map en la versión 5.0 de Hazelcast?

Mientras se implementa Hazelcast por primera vez en un conjunto de APIs web, el uso de Mapas y Caché es inconsistente.

Por ejemplo, crear una caché usando SpringCacheManager resulta en la creación de un mapa

var sCache = springCacheManager.getCache("testCache");
sCache.putIfAbsent("test", "test2");

Sin embargo, crear una caché usando CacheManager de CachingProvider resulta en la creación de una caché real que debe ser abierta y cerrada (según la documentación)

try (var cache = Caching.getCachingProvider().getCacheManager(null, null,
            HazelcastCachingProvider.propertiesByInstanceName("hazelcache")).createCache("actualCache", config)) {
        cache.putIfAbsent("test", "test");
    }

Otro ejemplo, al usar la anotación @Cacheable se creará un mapa, a pesar de que la documentación destaque el uso de una Caché. El siguiente código retornará exitosamente el primer valor calculado usando un Mapa en hazelcast. Nunca se utiliza una caché.

@Cacheable(value = "counter")
public Boolean test(Integer addTo) {
    counter += addTo;
    return counter % 2 != 0;
}

¿Existe una definición formal dentro de Hazelcast de una caché vs un mapa? ¿Ambos se pueden utilizar para el mismo propósito?

La siguiente imagen contiene una vista de un centro de gestión de Hazelcast que muestra los componentes mencionados anteriormente, es decir, los mapas y las cachés. Todos estos son generados por el mismo cliente.

enter image description here

test

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Como experto en IT especializado en spring-boot, caching, hazelcast y spring-cache, puedo brindar información sobre el uso inconsistente de Map y Cache al implementar Hazelcast por primera vez en un conjunto de APIs web.

    En primer lugar, no hay una definición formal dentro de Hazelcast de una cache versus un mapa. Sin embargo, en general, una cache es un contenedor que almacena datos que se acceden con frecuencia en la memoria para mejorar el rendimiento, mientras que un mapa es una colección que almacena datos en pares clave-valor.

    En Hazelcast, tanto los mapas como las caches pueden servir al mismo propósito de almacenar y acceder a los datos. La diferencia radica en cómo se configuran y utilizan en el código. Crear una cache utilizando SpringCacheManager resulta en la creación de un mapa, mientras que crear una cache utilizando el CacheManager de CachingProvider resulta en la creación de una cache real que debe ser abierta y cerrada.

    De manera similar, el uso de la anotación @Cacheable puede resultar en la creación de un mapa en lugar de una cache, dependiendo de cómo se configure.

    En última instancia, la elección de utilizar un mapa o una cache depende del caso de uso específico y los requisitos de la aplicación. Hazelcast ofrece ambas opciones y depende del desarrollador elegir la adecuada según sus necesidades.

Comments are closed.