Operaciones CRUD: una descripción general
NCache almacena datos como pares clave-valor, es decir, los identificadores únicos (clave) se almacenan contra un dato (valor). Similar a una base de datos clave-valor, NCache también almacena, recupera y administra datos a través de operaciones CRUD. A este respecto, NCache proporciona un conjunto diverso de API CRUD para almacenar en caché datos atómicos o masivos, tanto de forma síncrona como asíncrona. Aquí, proporcionamos una descripción general de NCache-Soporta operaciones CRUD básicas: Agregar, Insertar, Recibey Eliminar.
Antes de seguir adelante, debe saber qué almacenar en el caché. Además de los valores convencionales basados en cadenas, NCache permite agregar tipos de datos primitivos, objetos personalizados, datos con metadatos (Artículo de caché), estructuras de datosy Datos JSON.
Cualquier objeto agregado al caché debe ser serializable. NCache maneja la serialización binaria y JSON según el formato de su tienda. Si no puede realizar la serialización binaria nativa, NCache también proporciona su propia Marco de serialización compacto. Para la tienda JSON, NCache maneja la serialización de los objetos proporcionados. Alternativamente, puede agregar NCache proporcionó objetos serializados JSON, que permite la compatibilidad con aplicaciones multiplataforma y multilingües.
Tipos de operaciones
NCache permite operaciones CRUD en artículos individuales o a granel. Mientras tanto, los modos de operación admitidos son sincrónicos y asincrónicos. Aquí explicamos brevemente los tipos y modos de operación en NCache.
Operaciones atómicas
Note
Esta característica también está disponible en NCache Professional.
Clasificamos todas las operaciones realizadas en un único par clave-valor como operaciones atómicas. Por lo tanto, dichas operaciones requieren una única llamada de caché. El comportamiento de los atómicos. añadir, insertar, removey obtener Las operaciones se discutirán en secciones posteriores.
Operaciones masivas
Note
Esta característica también está disponible en NCache Professional.
Las operaciones masivas le permiten realizar cualquier operación CRUD en varios elementos a través de una sola llamada de caché. Aunque una operación masiva se ejecuta como una sola operación, el error de las operaciones se trata de forma individual. Están específicamente diseñados para mejorar el rendimiento. Por ejemplo, recuperar 100 elementos de caché en una sola operación masiva se realiza mucho más rápido que recuperarlos a través de 100 llamadas atómicas. De esta forma, el rendimiento mejora debido a la reducción de los viajes de red al servidor remoto.
Las operaciones masivas son particularmente útiles para obtener datos almacenados en caché de forma masiva al inicio de una aplicación o insertar un resultado de consulta de forma masiva en la memoria caché.
Operaciones síncronas
Note
Esta característica también está disponible en NCache Professional.
NCache permite agregar un elemento atómico o una gran cantidad de elementos de forma sincrónica. Dado que las operaciones sincrónicas ocurren como una llamada de bloqueo, el cliente debe esperar la respuesta del servidor para ejecutar más operaciones. El control vuelve a la aplicación una vez realizada la operación.
Aunque el cliente tiene que esperar a que finalice la operación, las operaciones de sincronización permiten devolver el estado de éxito/fallo de la operación a medida que el control vuelve al usuario. Tal operación puede fallar debido a una falla de conexión con el caché o errores internos del sistema. Este proceso proporciona a las aplicaciones el control para manejar cualquier escenario de falla tan pronto como se encuentre. Por lo tanto, estas operaciones son esenciales cuando se procesan datos críticos.
Además, las operaciones sincrónicas son secuenciales. Esto es útil si sus operaciones dependen unas de otras. Por ejemplo, un sitio de comercio electrónico agrega sincrónicamente artículos que están en venta flash solo durante 2 horas y luego recupera aquellos artículos que tienen una venta flash. Al recuperar los artículos almacenados en caché en venta, se pueden evitar fallas si se garantiza que estos artículos se agregaron correctamente al caché primero. Las operaciones CRUD básicas son síncronas de forma predeterminada a menos que se indique lo contrario.
Operaciones asíncronas
Las operaciones asíncronas ocurren en segundo plano, por lo que el cliente no tiene que esperar la respuesta del servidor para ejecutar más operaciones. La lista de acciones a realizar en el caché se mantiene en una cola en el lado del cliente, y un subproceso de fondo dedicado continúa enviándolas al lado del servidor. El control regresa a la aplicación inmediatamente después de que se pone en cola una operación. Esto aumenta la capacidad de respuesta general de la aplicación.
Las operaciones asincrónicas pueden ser útiles cuando el tiempo de respuesta es crítico para su aplicación y la falla de las operaciones no obstaculiza el funcionamiento de su aplicación.
Dado que las operaciones asincrónicas no notifican la falla o el éxito de las operaciones mismas, las llamadas asincrónicas en NCache devolver un objeto de la Clase de tarea que se puede utilizar para obtener el estado de la operación. En este sentido, la clase Tarea proporciona los siguientes indicadores de estado para indicar el éxito o el fracaso de la operación realizada.
- Esta completado: Notifica si la operación especificada ocurre con éxito en el caché.
- Tiene fallas: Notifica si la operación especificada ocurre pero falla.
- Está cancelado: Notifica si la operación especificada se cancela por algún motivo interno.
CRUD básico en caché distribuida
Puede interactuar con el caché una vez que obtener una instancia de un caché. Veamos el funcionamiento y el comportamiento de las operaciones CRUD básicas compatibles con NCache.
Agregar/Insertar
Los elementos se pueden agregar al caché usando Añada or recuadro método. Sin embargo, ambas operaciones difieren en el comportamiento. Add
agrega con éxito un elemento al caché con una clave específica solo cuando la clave proporcionada no existe en el caché y, de lo contrario, genera una excepción. Supongamos que desea prohibir que varios clientes a la vez agreguen un elemento al caché. Entonces puedes usar el Add
método para notificar la falla de la operación si un cliente intenta agregar un elemento que ya existe en el caché.
Por otra parte, Insert
también funciona como una operación de actualización. Si agrega un elemento usando el Insert
y la clave especificada ya existe en la memoria caché, se reemplaza el elemento existente en la memoria caché. Además de agregar elementos, actualiza de manera segura los elementos en el caché.
El caso más simple es agregar o insertar directamente un elemento en el caché especificando una clave y un valor. Sin embargo, estos métodos tienen varias sobrecargas que le permiten agregar/insertar elementos en el caché con opciones avanzadas. Los casos de uso relevantes y los comportamientos de Agregar/Insertar se analizan a continuación.
- Agregue la mayor parte de los datos: Se puede agregar una colección de datos al caché simultáneamente usando el
AddBulk
/InsertBulk
método.AddBulk
se puede usar si solicita específicamente notificaciones de fallas al agregar elementos con claves existentes. En este sentido, las operaciones fallidas se resaltan individualmente devolviendo un diccionario que especifica las claves correspondientes con la excepción de la aplicación. Por ejemplo, si se agrega una gran cantidad de 100 elementos al caché y 20 de esos elementos ya existen en el caché, los 80 elementos restantes se agregarán al caché. Los 20 elementos existentes se devolverán a la aplicación como un diccionario de operaciones fallidas.
En caso de que desee evitar fallas al agregar varios elementos para actualizar los elementos existentes, puede usar el InsertBulk
método. Sobrescribe los elementos existentes en el caché y devuelve un diccionario de claves que no se pudo agregar/actualizar por algún motivo.
Agregar datos de forma asíncrona: Los elementos se pueden agregar/insertar en la memoria caché de forma asíncrona cuando desee mejorar la eficiencia de la aplicación cliente.
AddAsync
/InsertAsync
Los métodos agregan los elementos en segundo plano y devuelven el objeto Tarea una vez que se completa la operación. El cliente puede consultar los indicadores de estado mencionados en Operaciones asíncronas para verificar el éxito o el fracaso de la operación de agregar/insertar sin ningún código adicional.Agregar datos con dependencias: Puede agregar/insertar elementos en el caché con dependencias. Dado que los datos del caché son temporales, es posible que sea necesario eliminar ciertos datos del caché según los criterios específicos del usuario. En ese caso, NCache proporciona varias formas de invalidar los datos almacenados en caché al permitirle establecer dependencias al agregar/insertar elementos. Específicamente, puede establecer dependencias basadas en equipo, datos de caché, base de datosy una fuente externa para invalidar y eventualmente eliminar ciertos elementos según los requisitos de su aplicación.
Escritura concurrente: Puede insertar elementos en el caché con cierre para controlar el acceso simultáneo en caso de aplicaciones multiproceso o multicliente. Ayuda a mantener la integridad de los datos cuando se realizan operaciones de actualización simultáneas en la memoria caché. Puede bloquear un elemento exclusivamente o trabajar en una versión del elemento agregado al caché. El caché mantiene la versión del elemento para cada elemento en el caché, y se incrementa automáticamente cada vez que se realiza la operación de actualización.
Escribir en la fuente de datos: En casos avanzados, si la fuente de datos está configurada, los datos se agregarán/actualizarán en la caché así como en la fuente de datos durante la operación de agregar/insertar.
Solicitud de flujo de ejecución: Cuando se produce una operación de agregar/insertar, el proceso de ejecución de la solicitud subyacente sigue estos pasos: serialización, cifrado y compresión. Primero, los datos proporcionados se serializan. Luego se cifra en el extremo del cliente si el cifrado está configurado. Dado que los datos que viajan a través de la red se pueden interceptar fácilmente, puede cifrar sus datos confidenciales utilizando NCache Función de cifrado de datos para protegerlo de los riesgos de seguridad. Finalmente, los datos cifrados se comprimen si la compresión está habilitada. Dado que el ancho de banda y la memoria disponibles son escasos, NCache Función de compresión de datos le permite reducir significativamente el tráfico de red y el consumo de memoria. Eventualmente, sus operaciones de escritura se realizan más rápido.
Recibe
Principalmente, un caché se considera efectivo en función de su capacidad para recuperar datos. Se puede recuperar un elemento de la memoria caché usando el Get
operación especificando la clave con la que se almacenó el elemento. En caso de que el elemento especificado no exista en la memoria caché, se devuelve un valor nulo sin excepción.
Obtenga la mayor parte de los artículos: Se pueden recuperar varios elementos del caché simultáneamente usando el
GetBulk
método. Recupera los elementos que se encuentran en la memoria caché en forma de diccionario clave-valor. No se lanza ninguna excepción si alguna de las claves especificadas no existe en el caché.Verificar la existencia de artículos.: Dado que el caché es volátil, es posible que necesite saber si un elemento existe en el caché o no. La existencia de un artículo se puede determinar mediante el NCache previsto
Contains
método. Además, la existencia de múltiples artículos se puede verificar a través de laContainsBulk
método.Obtener de la fuente de datos: En casos avanzados, si la fuente de datos está configurada, los datos se obtendrán de la fuente de datos si no existe en la memoria caché. Para más detalles, puede consultar el capítulo Proveedores de fuentes de datos.
Eliminar
Para administrar los datos obsoletos y el almacenamiento en caché de manera eficiente, es posible que deba eliminar los datos explícitamente. Puede eliminar fácilmente elementos de la memoria caché utilizando el Remove
método. Si la clave especificada no existe en la memoria caché, se devuelve un valor nulo. También puede obtener el elemento eliminado para su posterior procesamiento según las necesidades de su aplicación. Sin embargo, el coste de recuperar los objetos al retirarlos es inevitable. Por lo tanto, se recomienda el enfoque anterior cuando no necesita los elementos al retirarlos.
Eliminar artículos a granel: Una colección de elementos se puede eliminar de la memoria caché simultáneamente usando el
RemoveBulk
método. También puede recuperar los elementos eliminados con éxito en un diccionario. Sin embargo, puede ser lento según el tamaño de los objetos recuperados al retirarlos. Por lo tanto, se recomienda simplemente eliminar los elementos, ya que es más eficiente cuando no necesita procesar los elementos eliminados.Eliminar elementos de forma asíncrona: Puede eliminar datos atómicos del caché de forma asíncrona usando el
RemoveAsync
método. El elemento se eliminará en segundo plano y, una vez finalizada la operación, recibirá el estado. En caso de que desee verificar si ese elemento se eliminó con éxito o no, puede usar el indicadores de estado para operaciones asíncronas.Eliminar de la fuente de datos: En casos avanzados, si la fuente de datos está configurada, la eliminación de datos se producirá tanto en la memoria caché como en la fuente de datos. Para más detalles, puede consultar el capítulo Proveedores de fuentes de datos.
Note
Diferente a la Remove
y RemoveBulk
, RemoveAsync
no devuelve los objetos eliminados a la aplicación.
En esta sección
Agregar datos a la caché
Explica cómo agregar datos a la memoria caché.
Actualizar datos existentes en caché
Explica cómo actualizar los datos existentes en la memoria caché.
Quitar datos de la caché
Explica cómo eliminar datos de la memoria caché.
Recuperar datos de caché existentes
Explica cómo recuperar datos de la memoria caché.