Open source
Components for
robust services
Cache, key-value storage, idempotency, rate limiting, msgs, and more. The building blocks your service needs available from the Diom components platform.
One binary for the primitives you keep rebuilding
Every backend primitive you need, without the infrastructure sprawl. One binary, self-hosted, and open-source.
The common components you need
Cache, rate limiting, idempotency, queues, streams, key-value, and more. All in a single service, one SDK, and a consistent API. Patterns are well established, there's no reason why to build them from scratch.
Replaces Redis, Kafka, custom code, and more…
Avoid infrastructure sprawl. Diom can replace Redis, Kafka, RabbitMQ, and a lot of custom code for many use-cases. Less to run, less to learn, less to maintain. Just one open-source binary.
Highly-available and easy to operate
Self-contained, manages its own storage, and can be run as a single node or a highly-available cluster. Focusing on easy operations for 95% of products, instead of benchmarking against FAANG scale.
Robust by default
Use pre-built idiomatic components rather than building fragile versions on top of Postgres and Redis, or running a zoo of specialized services that each need their own backups, monitoring, and maintenance.
Idiomatic building blocks
The building blocks you need for building robust backends.
Cache
Fast, distributed caching with TTL support. Keep hot data close to your application and reduce load on your primary data store.
Diom caching uses a hybrid of memory and disk storage with configurable backing (ramfs, ephemeral SSDs, persistent disk) for large cache sizes and fast access.
Set and get cache values with a TTL
client.cache().set(
"my-key".to_string(),
b"cached value".to_vec(),
CacheSetIn::new(Duration::from_secs(10))
)
.await?;
let out = client.cache()
.get("my-key".to_string(), CacheGetIn::new())
.await?;
match out.value {
Some(bytes) => println!("Got: {}", String::from_utf8_lossy(&bytes)),
None => println!("Key not found"),
}Built for your backend needs
Works with most common deployment environments and frameworks.
High availability
Supports deploying as a Raft-powered cluster to stay up when a node fails and have zero-downtime upgrades.
Stateless HTTP API
Works in every environment and with the wider ecosystem. No proprietary protocols or special drivers required.
Fine-grained authorization
Per-tenant and per-user data isolation at the data layer, enabling secure multi-tenancy and least-privilege setups out of the box.
Low latency
Having the implementation and the storage layer on the same node enables low latency operations (e.g. 100μs hot reads).
Developer experience
SDKs for the most popular languages (with more planned), so you can integrate Diom into your stack with minimal friction.
Easy to operate
Easy setup, monitor, and operate. Self-healing clusters, built-in backups, and more. Built with operations in mind.
Open source
Diom is free and open source software with the source code available on GitHub. Contributions and suggestions are welcome!
Built with 100% safe Rust
Written entirely in safe, async Rust for memory safety, fearless concurrency, and high performance.
Diom Playground
Try Diom live in a playground environment. Use the CLI from the browser or from your own terminal.
Connected to sandbox.diom.dev:8443
Type Diom CLI commands below (same as diom …). Try: kv get <key>, help, or --help
————————————————————————————————————————————————
diom> kv set greeting "Hello, world!"
OK
diom> kv get greeting
"Hello, world!"
diom> cache set user:42 '{"name":"Ada"}' --ttl 3600
OK