Usar NCache como caché de datos Spring

NCache Es un almacén de clave-valor distribuido en memoria que se integra con Spring Framework para eliminar cuellos de botella en la base de datos. Funciona como proveedor de caché Spring de alto rendimiento, lo que permite una escalabilidad lineal para aplicaciones Java con un alto volumen de transacciones.

Spring es un marco y contenedor de desarrollo orientado a aspectos y de inyección de dependencias livianos para Java. Le permite simplificar el desarrollo de su aplicación y conectar piezas reutilizables en su aplicación como NCache.

Casos de uso comunes para NCache en Spring Data

  • Escalado de bases de datos: Elimine los cuellos de botella de alta latencia almacenando en caché los repositorios de datos de Spring en la memoria.
  • Gestión de sesiones: Resolver problemas de permanencia de sesiones en entornos web agrupados.
  • Estandarización: Implemente almacenamiento en caché compatible con JCache (JSR-107) para aplicaciones Spring independientes del proveedor.
  • Alta disponibilidad: Garantice un tiempo de actividad del 100 % con un caché distribuido escalable linealmente y con capacidad de recuperación automática.
 

¿Por qué es NCache ¿El mejor caché distribuido para aplicaciones Spring?

Spring en sí reduce la complejidad general del desarrollo de Java al proporcionar cohesión y acoplamiento flexible, pero crea un alto tráfico en estas aplicaciones. Estas aplicaciones Spring de alto tráfico enfrentan un importante problema de escalabilidad. Por lo tanto, es fundamental contar con una caché distribuida en memoria que cumpla con sus requisitos de escalabilidad.

Aunque estas aplicaciones pueden ampliarse añadiendo más servidores a su granja de servidores, lamentablemente las bases de datos no pueden ampliarse para soportar cargas tan elevadas. Para estos escenarios, una caché distribuida es lo mejor para manejar la base de datos. escalabilidad problema.

Por lo tanto, la mejor opción es NCache. Es un proceso rápido, en memoria, tienda de valor clave caché distribuido, que ha implementado un módulo de almacenamiento en caché Spring, lo que hace que sus aplicaciones Spring sean escalables y distribuidas. Descarga su base de datos al reducir los costosos viajes a la base de datos que causan problemas de escalabilidad y proporciona un rendimiento más rápido.

 

Cómo configurar la aplicación Spring para usar NCache

Para configurar una aplicación Spring con NCacheLos desarrolladores pueden elegir entre el proveedor de almacenamiento en caché nativo de Spring o el proveedor compatible con JCache.

  • A través de los Proveedor de almacenamiento en caché de primavera, NCache actúa como un administrador de caché para su aplicación Spring.
  • A través de los Proveedor de almacenamiento en caché JCache, NCache utiliza la función compatible de JCache.
 

Adición de dependencias

Para configurar su aplicación Spring, primero debe agregar todas las dependencias Maven requeridas que Spring y NCache proporcionar.

<dependency>
    <groupId>com.alachisoft.ncache</groupId>
    <artifactId>ncache-spring</artifactId>
    <version>x.x.x</version>
</dependency>
 

Configurar la aplicación Spring a través del proveedor de almacenamiento en caché Spring

Después de agregar estas dependencias, defina beans en su aplicación Spring, a través de la definición de bean basada en Java o XML.

Definición de Bean basado en Java:
Para definir beans utilizando una definición basada en Java, debe agregar el @Frijol anotación en la clase CachingConfiguration, donde el método setConfigFile especificará la ruta a su archivo ncache-spring.xml. Para obtener información detallada, consulte Bean basado en Java Definición.

@Configuration
class CachingConfiguration {
    @Bean
    public CacheManager cacheManager() {
        String resource = Path.of(System.getenv("NCHOME"), "config/ncache-spring.xml").toString();

        SpringConfigurationManager springConfigurationManager = new SpringConfigurationManager();
        springConfigurationManager.setConfigFile(resource);

        NCacheCacheManager cacheManager = new NCacheCacheManager();
        cacheManager.setSpringConfigurationManager(springConfigurationManager);

        return cacheManager;
    }
}

Definición de Bean basada en XML:
Para definir beans utilizando una definición basada en XML, debe agregar un archivo XML que permita el almacenamiento en caché y especifique NCache como administrador de caché. Debe definir etiquetas Bean tanto para cacheManager como para NCacheAdministrador de configuración. Además, debe especificar las siguientes propiedades para cacheManager.

  • SpringConfigurationManager: Referencia a NCache bean del administrador de configuración.
  • ruta del archivo de registro: Ruta completa para los registros del administrador de caché.
<bean id="cacheManager" class="com.alachisoft.integrations.spring.NCacheCacheManager">
	<property name="springConfigurationManager" ref="NCacheConfigurationManager"/>
	<property name="logFilePath" value=" C:\Program Files\NCache\log-files\CustomerDBSpringLogs"/>
</bean>
<bean id="NCacheConfigurationManager" class="com.alachisoft.integrations.spring.configuration.SpringConfigurationManager">
        <property name="configFile" value="ncache-spring.xml">
</bean>

Para obtener más detalles, vaya a Definición de Bean basada en XML.

Además, debe configurar sus cachés en el archivo ncache-spring.xml para el NCache Centro de Gestión. Cada caché necesita su propia definición con su propio conjunto de propiedades en este archivo. Por ejemplo:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<application-config default-cache-name="books">
  <caches>
    <cache name="books" ncacheid-instance="democache" priority="normal" expiration-type="absolute" expiration-period="300"/>
  </caches>
</application-config>
 

Cómo configurar aplicaciones Spring mediante el proveedor JCache (JSR-107)

Spring también admite proveedores de almacenamiento en caché compatibles con JCache donde puede usar JCache en su aplicación Spring con NCache. Primero, agregue las dependencias de Maven para Spring, NCachey JCache. Después de agregar dependencias, configure los cachés:

  • Agregar spring.cache.cache-nombres etiqueta en el aplicación.propiedades archivo. El nombre de la caché debe ser el mismo que se configuró en el NCache Centro de Gestión.
  • Configura tu caché a través de la JCacheManagerPersonalizador clase que inicializa el caché en tiempo de ejecución con la configuración deseada.

Para más información, puede consultar nuestro Documentos de JCache Spring.

 

Cómo utilizar el almacenamiento en caché declarativo mediante @Cacheable en Spring Data

Una vez que habilite el almacenamiento en caché a través de las dos configuraciones definidas anteriormente, el siguiente paso es vincular estos comportamientos de almacenamiento en caché a sus respectivos métodos para usar. NCache como proveedor de almacenamiento en caché para Spring.

Puede vincular comportamientos de almacenamiento en caché a sus métodos de dos maneras. uno ha terminado Almacenamiento en caché de anotaciones.

// BookController.java
@RestController
@RequestMapping("/books")
public class BookController {
    @Autowired
    // Get a Spring Service to save objects in the DB. This also caches them with 5min absolute (TTL) expiration.
    BookService service = context.getBean(BookService.class);
    service.save(new Book(18001, "The Second Machine Age", "Erik Brynjolfsson, Andrew McAfee", new Date(2014, 0, 20)));

    // Print all saved books details
    printBooks(service.listAll());

    // Use Spring Service to get a book from the DB. It actually comes from the cache
    Book foundBook = service.findBookByIsbn(18001);
    printBookDetails(foundBook);

    foundBook.setAuthor("New Author");
    Book UpdatedBook = service.update(foundBook);

    printBookDetails(UpdatedBook);
    context.close();
    System.exit(0);
    }

// BookService.java
@Service
class BookService {
    @Autowired
    private BookRepository repo;

    public List<Book> listAll() {
        return repo.findAll();
    }

    @CachePut(value = "demoCache", key = "#book.getISBN()")
    public Book save(Book book) { return repo.save(book); }

    @CachePut(value = "demoCache", key = "#book.getISBN()")
    public Book update(Book book) { return repo.save(book); }

    @Cacheable(value = "demoCache", key = "#id")
    public Book get(int id) {
        return repo.findById(id);
    }

    @Cacheable(value = "demoCache", key = "#isbn")
    public Book findBookByIsbn(long isbn) {
        return repo.findBookByIsbn(isbn);
    }

    @CacheEvict(value = "demoCache", allEntries = true)
    public void delete(int id) {
        repo.deleteById(id);
    }
}

Si no usa anotaciones, entonces Almacenamiento en caché declarativo basado en XML se puede usar donde puede especificar el método de destino y las directivas de almacenamiento en caché de forma externa.

<!-- the service we want to make cacheable -->
<bean id="bookService" class="x.y.service.BookService"/>
<!-- cache definitions -->
<cache:advice id="booksCacheAdvice" cache-manager="cacheManager">
    <cache:caching cache="demoCache">
        <cache:cacheable method="getBookNameByIsbn" key="#isbn"/>
        <cache:cache-evict method="loadBooks" all-entries="true"/>
    </cache:caching>
</cache:advice>

¿Qué hacer a continuación?

Preguntas frecuentes

NCache Mejora el rendimiento de Spring Data al actuar como una caché distribuida en memoria que elimina los cuellos de botella de la base de datos. Al almacenar datos de acceso frecuente en un nivel intermedio escalable, NCache Reduce los viajes a bases de datos de alta latencia, proporcionando tiempos de respuesta de submilisegundos para aplicaciones Java de alta transacción.

Sí, NCache Es totalmente compatible con JCache (JSR-107). Puedes integrar NCache en su aplicación Spring utilizando el proveedor JCache estandarizado, lo que permite una lógica de almacenamiento en caché independiente del proveedor y una migración perfecta sin cambiar su código.

El NCache Spring Caching Provider es una integración nativa que ofrece funciones avanzadas NCache-Características específicas como la expiración flexible y el bloqueo. JCache es una API de Java estandarizada (JSR-107) que garantiza la interoperabilidad. Ambas permiten el almacenamiento en caché declarativo mediante anotaciones como @caché.

Para habilitar el almacenamiento en caché declarativo, agregue el @EnableCaching Anote su clase de configuración y defina una NCache Administrador de caché frijol. Luego puedes usar el @caché Anotación sobre los métodos de servicio para almacenar y recuperar datos automáticamente NCache racimo.

Sí, NCache Proporciona escalabilidad lineal, lo que permite añadir más servidores de caché a su clúster en tiempo de ejecución sin detener la aplicación. Esto garantiza que, a medida que aumenta la carga de transacciones de Spring Data, su nivel de caché se escale proporcionalmente para mantener el rendimiento.

Contáctenos

TELÉFONO

+1 214-619-2601 (EE.UU.)

+44 20 7993 8327 (Reino Unido)

© Copyright Alachisoft 2002 - Todos los derechos reservados. NCache es una marca registrada de Diyatech Corp.