Saltar al contenido principal

Zaris: una alternativa nativa a Redis para .NET

Zaris es una plataforma de datos distribuida y en memoria creada de forma nativa para .NET: una alternativa a Redis para equipos cuyo stack es .NET. Es replicado, de alta disponibilidad y autoalojado: los datos se particionan entre nodos y se mantienen con un factor de replicación configurable, de modo que un nodo puede fallar sin pérdida de datos ni tiempo de inactividad. Lo ejecutas en Windows, Docker y Kubernetes, y lo operas desde una consola web, PowerShell o directamente desde tu aplicación.

Y no solo es compatible: es más rápido que Redis en muchos frentes: un rendimiento medible y superior en nodos de producción de 8 núcleos (hasta +87%), un rendimiento que escala con cada núcleo y nodo mientras que una única instancia de Redis se mantiene plana, además de búsqueda indexada integrada que supera a una base de datos en disco. Las concesiones honestas también quedan sobre la mesa: la latencia por operación está a la par con Redis (no es más rápida), y Redis sigue siendo más eficiente en memoria (~2.5×). Cada cifra de rendimiento es medida y reproducible.

Por qué los equipos de .NET miran más allá de Redis​

Redis es excelente: maduro, rápido e independiente del lenguaje. Pero para un equipo de .NET es un mundo aparte: otro runtime que operar, pensado para Linux, al que se accede mediante una biblioteca cliente de terceros y difícil de ejecutar bien en Windows. Zaris cierra esa brecha al ser parte de la propia plataforma .NET:

  • Caché de ASP.NET Core lista para usar: proveedores IDistributedCache y HybridCache, por lo que el código de caché existente funciona sin cambios.
  • Cliente .NET nativo: APIs asíncronas reales y tipos .NET, no un envoltorio de protocolo.
  • Windows, Docker y Kubernetes de primera clase: incluye un Helm chart oficial.
  • Operable: una consola web y herramientas de PowerShell para el estado del clúster/particiones, el escalado y TLS.

Zaris frente a Redis​

DimensiónRedisZaris
Encaje de plataformaServidor en C independiente del lenguaje, pensado para Linux.NET nativo; se ejecuta donde se ejecuta tu aplicación .NET, incl. Windows
Integración con .NETCliente de terceros por aplicaciónIDistributedCache + HybridCache listos para usar, cliente nativo y asíncrono
Alta disponibilidadReplicación + modo ClusterParticionado + replicado (RF configurable); sin pérdida de datos al caer un nodo
RendimientoUn hilo por instancia; añade instancias para usar más núcleosUsa todos los núcleos — +70–87% vs Redis on 8-core nodes (medido)
Escalado horizontalRedis Cluster; cada instancia se mantiene planaCasi lineal entre nodos — 18.5M ops/sec at 3 nodes frente a 7.57M de Redis
Latencia por operación~83 µs p50~81 µs p50 — a la par, sin penalización por compatibilidad
Búsqueda indexadaMediante el módulo independiente RediSearchIntegrada búsqueda estilo SQL — un millón de registros en ms, más rápida que una base de datos en disco, escala con los nodos
Memoria por registroMás eficiente~2.5× (motor gestionado + metadatos por registro) — la concesión honesta
OperaciónCLI + paneles de tercerosConsola web integrada + PowerShell
DespliegueServidor independienteInstalador de Windows · Docker Compose · Helm chart de Kubernetes (multi-arch)
CoordinaciónBloques básicos (MULTI/EXEC, Redlock)De primera clase: transacciones, bloqueos, elección de líder, concesiones (leases), contadores, limitación de tasa
SeguridadACLs + TLSTLS mutuo, confianza de CA conectable, autenticación por token
Alcance de lenguajesClientes en todos los lenguajesCliente .NET nativo, además de un front-end de protocolo Redis (RESP) para cualquier lenguaje
Estructuras de datos y pub/subCadenas, hashes, listas, conjuntos, conjuntos ordenados, streams, pub/subHashes, listas, conjuntos, conjuntos ordenados nativos, pub/sub y Streams (2.0.0)
MadurezProbado en producción, con un ecosistema enormeDisponible de forma general (2.0.0), enfocado en .NET

Cambia en unas pocas líneas​

Zaris habla las interfaces que ASP.NET Core ya usa, así que adoptarlo es, sobre todo, cuestión de configuración:

// Program.cs — Zaris as your IDistributedCache
builder.Services.AddClustronZaris("cache", "zaris://cache-0:7861,cache-1:7861/app");
builder.Services.AddClustronDistributedCache("cache");

// ...then inject IDistributedCache (or HybridCache) and use it exactly as before.

Las cadenas de conexión son idénticas en proceso, en remoto, en Docker y en Kubernetes — zaris://host:7861/store (zariss:// para TLS), con hosts semilla separados por comas, conmutación por error automática y tokens suministrados de forma segura mediante env: o file:.

Cuándo elegir cada uno​

Elige Zaris cuando tus servicios son .NET y quieres una plataforma de datos en memoria nativa, autoalojada y de alta disponibilidad: un único motor para caché, búsqueda indexada y coordinación, con integración y operación centradas en .NET. Es la mejor opción cuando quieres más rendimiento que una única instancia de Redis, un escalado que crece con los núcleos y los nodos, o búsqueda indexada sobre tus datos sin un segundo sistema.

Elige Redis cuando necesitas el historial de producción más largo y el mayor ecosistema disponible hoy, cuando tu carga de trabajo está limitada por memoria con valores diminutos (Redis es más eficiente por registro), o cuando dependes de funciones de Redis que Zaris no implementa (scripting en Lua, bitmaps, HyperLogLog, geo, persistencia RDB/AOF). Ten en cuenta que Zaris 2.0.0 sí ofrece hashes, listas, conjuntos, conjuntos ordenados, pub/sub y Streams nativos — y un front-end de protocolo Redis (RESP) que permite que clientes en cualquier lenguaje (Python, Ruby, Java, Go, …) usen Zaris como reemplazo directo — así que "compartido entre lenguajes distintos de .NET", "estructuras de datos" y "pub/sub" ya no son razones por las que Zaris quede descartado. Consulta la matriz de compatibilidad de comandos de Redis para saber exactamente qué comandos funcionan.

Preguntas frecuentes​

¿Cuál es una buena alternativa a Redis para .NET?

Zaris: un almacén clave/valor distribuido y en memoria creado de forma nativa para .NET. Es replicado, de alta disponibilidad y autoalojado, con IDistributedCache/HybridCache listos para usar y un cliente nativo y asíncrono.

¿Existe una caché distribuida nativa de .NET en lugar de Redis?

Sí. Zaris se ejecuta donde se ejecuta tu aplicación .NET (incluido Windows de primera clase) y se integra mediante tipos .NET nativos, en lugar de un servidor independiente al que se accede mediante un protocolo de red.

¿Zaris es de alta disponibilidad como Redis?

Sí. Los datos se particionan y cada partición se replica con un factor de replicación configurable, de modo que un nodo puede fallar sin pérdida de datos ni tiempo de inactividad. El valor predeterminado es 4 nodos con RF 2.

¿Cómo cambio de Redis a Zaris en ASP.NET Core?

Registra la caché distribuida de Zaris en Program.cs con una cadena de conexión zaris://. Como Zaris implementa IDistributedCache y HybridCache, el código que depende de esas interfaces sigue funcionando.

Primeros pasos​