The distributed key-value store your team can actually run
Zaris is a high-performance, in-memory key-value store — partitioned and replicated across your cluster, with transactions, watches, leases, locks, counters, and TTL built in. Run it embedded in your app for development, then scale to a real cluster without changing a line of code.
Everything a distributed store needs — nothing you have to bolt on
Zaris ships the data plane and the control plane together, so you get storage, coordination, security, and tooling in one dependency.
Partitioned & replicated
Data is sharded across nodes and replicated for availability, with automatic placement and rebalancing as the cluster grows.
Transactions & CAS
Atomic multi-key transactions and compare-and-swap keep concurrent updates correct under load.
Watches, leases & locks
Stream changes in real time, coordinate work with leases and distributed locks, and elect leaders.
Counters & TTL
Atomic counters with bounds, and time-to-live expiry for caches, sessions, and rate windows.
Security built in
Mutual TLS with four CA/trust models, token authentication, and deny-by-default RBAC — enabled per store.
Console & PowerShell
A web console and full PowerShell tooling to create, scale, secure, and observe every store.
In-process for dev. Clustered for production.
A key is owned by one partition and replicated to followers. Clients are routed to the owner automatically, so reads and writes stay consistent while the cluster tolerates node loss.
- Run embedded with zero servers — perfect for local dev and tests.
- Move to a multi-node cluster with the same client code.
- Automatic partition ownership and replica placement.
- Node failure is tolerated up to your replication factor.
See your whole cluster at a glance
Every Zaris cluster ships with a built-in web console — real-time throughput, partition ownership, node health, live data and security.
From caching to coordination
Teams reach for Zaris whenever shared state or coordination is on the critical path.
Speed up a slow app
Cache expensive queries, API responses, and rendered fragments with near-zero latency in-process — then share the cache across instances when you scale out.
Distributed session store
Keep user sessions consistent across every instance behind your load balancer, with TTL expiry handled for you.
Coordination & leader election
Run singletons safely, guard critical sections with distributed locks, and elect a leader for scheduling and orchestration.
Live updates with watches
React to data changes the moment they happen — config reloads, presence, dashboards, and event fan-out.
Rate limiting & quotas
Enforce fixed and sliding windows with atomic counters, cluster-wide, without a separate service.
Job & task queues
Coordinate producers and competing workers with leases and atomic claims on shared state.
A distributed cache in a few lines
Register a store with dependency injection, then put and get. Start in-process; point the same code at a cluster when you are ready.
Read the docs// In-process is just a connection string: zaris://inproc/orders
var services = new ServiceCollection()
.AddClustronZaris("orders", "zaris://inproc/orders")
.BuildServiceProvider();
var client = await services
.GetRequiredService<IZarisClientProvider>()
.GetAsync("orders");
// Cache an expensive computation for 5 minutes
await client.PutAsync("cart:42", cart, Put.WithTtl(TimeSpan.FromMinutes(5)));
var cached = await client.GetAsync<Cart>("cart:42");
Ready to build with Zaris?
Get started in minutes, or talk to us about your architecture.
