Saltar al contenido principal

Visión general de la guía del desarrollador

Esta guía te muestra cómo construir aplicaciones .NET sobre Clustron Zaris: cómo obtener un cliente, almacenar y recuperar datos, ejecutar operaciones masivas (bulk) y por lotes (batch), borrar datos, controlar el comportamiento de escritura con opciones, y gestionar la serialización. También cubre las primitivas de coordinación (leases, locks, contadores, watch, transacciones) que hacen seguro usar Zaris desde muchos procesos a la vez.

Cada tarea de esta guía usa la misma interfaz de cliente, IZarisClient, y el mismo código funciona tanto si el almacén se ejecuta en proceso como a través de un clúster distribuido.

Qué aprenderás​

La guía está centrada en tareas. Al final podrás:

  • Resolver un cliente desde la inyección de dependencias y reutilizarlo correctamente.
  • Almacenar, leer y eliminar claves individuales, e interpretar el KvResult que recibes de vuelta.
  • Mover muchas claves a la vez con operaciones masivas, y mezclar tipos de operación con lotes.
  • Borrar un prefijo, un rango de claves, o el almacén completo.
  • Adjuntar TTL, etiquetas, leases y comprobaciones de concurrencia a una escritura mediante PutOptions.
  • Controlar cómo se serializan y deserializan tus objetos.
  • Diseñar claves y etiquetas de modo que los escaneos, consultas y watches se mantengan eficientes.
  • Hacer las operaciones resilientes con los reintentos integrados del cliente y los patrones seguros de reintento.
  • Observar un almacén a través de las métricas que emite, y probar tu código contra un almacén en proceso.
  • Aplicar buenas prácticas, evitar errores comunes, y usar Zaris como una caché de ASP.NET Core.

El flujo de trabajo típico​

La mayoría de las aplicaciones siguen la misma forma. Resuelves un cliente una vez en el arranque, luego lo reutilizas para cada operación.

// 1. Resolve a client for a named store.
var client = await provider.GetAsync("default");

// 2. Write and read data.
await client.PutAsync("key", "value");
var result = await client.GetAsync<string>("key");

// 3. Inspect the result.
if (result.IsSuccess)
{
Console.WriteLine(result.Value);
}

Cada operación devuelve un objeto de resultado en lugar de lanzar una excepción ante una clave ausente o una escritura rechazada. Compruebas IsSuccess (o el más específico Status) en lugar de capturar excepciones para resultados esperados. Operaciones básicas cubre este patrón en detalle.

Primitivas de coordinación​

Las lecturas y escrituras de una sola clave bastan para una caché. Cuando varios procesos comparten el mismo almacén, también necesitas coordinarlos. Zaris expone estas primitivas a través del mismo cliente:

  • Los leases conceden propiedad acotada en el tiempo de una clave. Cuando el lease expira, las claves adjuntas a él se eliminan.
  • Los locks dan a un llamante acceso exclusivo a una clave mientras hace un cambio.
  • Los contadores proporcionan incremento y decremento atómicos para estado numérico compartido.
  • Watch entrega notificaciones de cambio para que tu código reaccione a las actualizaciones en lugar de sondear.
  • Las transacciones agrupan varias operaciones en una única unidad de todo-o-nada.

Cada primitiva tiene su propia página más adelante en esta guía.

Estructuras de datos, pub/sub y Streams​

Más allá del par clave/valor simple, Zaris 2.0.0 añade colecciones y mensajería nativas del lado del servidor, cada una una API de cliente de primera clase y también alcanzable a través del front-end del protocolo Redis:

  • Estructuras de datos — hashes, listas, sets y sorted sets, los análogos de los tipos de Redis.
  • Pub/sub — mensajería publicación/suscripción a nivel de todo el clúster.
  • Streams — un log durable de solo anexado (append-only) con grupos de consumidores y lecturas bloqueantes.

El front-end del protocolo Redis (RESP) expone todo lo anterior (además del KV simple) a clientes Redis ordinarios en cualquier lenguaje.

La misma API en todas partes​

La API de cliente no cambia entre modos de despliegue. Un almacén configurado como InProc se ejecuta dentro de tu proceso; un almacén configurado como Remote habla con un clúster por la red. El código de tu aplicación es idéntico en ambos casos, así que puedes desarrollar contra un almacén en proceso y desplegar contra un clúster sin reescribir las llamadas. Consulta Obtener un cliente para saber cómo seleccionar un modo a través de la configuración.

Próximos pasos​