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
IDistributedCacheyHybridCache, 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ón | Redis | Zaris |
|---|---|---|
| Encaje de plataforma | Servidor en C independiente del lenguaje, pensado para Linux | .NET nativo; se ejecuta donde se ejecuta tu aplicación .NET, incl. Windows |
| Integración con .NET | Cliente de terceros por aplicación | IDistributedCache + HybridCache listos para usar, cliente nativo y asíncrono |
| Alta disponibilidad | Replicación + modo Cluster | Particionado + replicado (RF configurable); sin pérdida de datos al caer un nodo |
| Rendimiento | Un hilo por instancia; añade instancias para usar más núcleos | Usa todos los núcleos — +70–87% vs Redis on 8-core nodes (medido) |
| Escalado horizontal | Redis Cluster; cada instancia se mantiene plana | Casi 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 indexada | Mediante el módulo independiente RediSearch | Integrada 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 registro | Más eficiente | ~2.5× (motor gestionado + metadatos por registro) — la concesión honesta |
| Operación | CLI + paneles de terceros | Consola web integrada + PowerShell |
| Despliegue | Servidor independiente | Instalador de Windows · Docker Compose · Helm chart de Kubernetes (multi-arch) |
| Coordinación | Bloques básicos (MULTI/EXEC, Redlock) | De primera clase: transacciones, bloqueos, elección de líder, concesiones (leases), contadores, limitación de tasa |
| Seguridad | ACLs + TLS | TLS mutuo, confianza de CA conectable, autenticación por token |
| Alcance de lenguajes | Clientes en todos los lenguajes | Cliente .NET nativo, además de un front-end de protocolo Redis (RESP) para cualquier lenguaje |
| Estructuras de datos y pub/sub | Cadenas, hashes, listas, conjuntos, conjuntos ordenados, streams, pub/sub | Hashes, listas, conjuntos, conjuntos ordenados nativos, pub/sub y Streams (2.0.0) |
| Madurez | Probado en producción, con un ecosistema enorme | Disponible 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
- Instalación (todas las plataformas): clustron.io/install
- Documentación: clustron.io/docs
- Comparación más detallada: Zaris vs Redis
- NuGet:
dotnet add package Clustron.Zaris.SDK - Código y versiones: github.com/Clustron/zaris