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
KvResultque 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.