salihcantekin / ruvio
git clone https://github.com/salihcantekin/ruvio.git
ruvio-0.3.4 · 3d ago
Redis-compatible, open-source in-memory database written in Rust. Multi-shard, 287 commands, clients for Rust, .NET, Go, Java, Python and Node.js
—
stars, 24h
+127
stars, 7 days · #405
+127
stars, 30 days · #1,855
127
★ total · +127% this week
12
forks · 7 open issues
Star history starts 2026-10-20; the chart appears after the second daily snapshot.
LanguageRust
LicenseAGPL-3.0
Created2026-10-15 (5d ago)
Last pushtoday
Watchers4
OwnerUser
GitHub topics
Links
- GitHub: github.com/salihcantekin/ruvio
- Homepage: ruviodb.com
- Releases · Issues · Hacker News mentions
README excerpt
Ruvio One process instead of a cache, a lock service, a conditional write, a change feed and a delay queue. A Rust key-value server that speaks RESP. redis-cli and existing RESP clients connect. Get started · Website · Commands · Performance · Packages · Docs · Releases Why Ruvio · Quick start · Building blocks · Performance · Clients · Operator UI · Documentation · License --- ## Why Ruvio The shard that owns a key parses, records, applies, and replies. The hot path does not take a lock and does not hop to another thread. | Strength | What it means | | --- | --- | | **Owner-per-shard engine** | One owner per shard, no lock on apply. A feature allocates only when a key uses it: twenty thousand leases added about 3.6 MB, twenty thousand versioned 64-byte strings about 7.2 MB, body included. | | **Durability you name** | `memory`, `snapshot`, `everysec` or `always`, chosen at startup. A write is checked, appended, then applied. If the log cannot take the record, the key stays as it was and later writes return `MISCONF`. | | **Wire compatible** | RESP2 subset; `redis-cli` and existing RESP clients connect. The command list that CI checks is docs/compatibility-matrix.json. | | **Six first-party clients** | Rust, C#, Go, Java, Python and Node.js, each with a typed method for every one of the 287 listed commands and cluster routing from one seed address. | | **Operator UI** | A browser view of one running server: data, command forms, Pub/Sub and ACL users. | ## Quick start A default process listens on `127.0.0.1:6379`. [code] `linux` and `latest` are the same Linux image, as is each version tag, built for linux/amd64 and linux/arm64 (Apple Silicon and other arm64 hosts run it natively). The image default durability is `memory`. A persistent deploy sets `RUVIO_DURABILITY` and keeps the volume. Prebuilt binary (Linux x64/arm64, macOS arm64, Windows x64) Download a binary from GitHub Releases. Each archive holds `ruvio` (the server), `ruvio-ctl` (backup, restore and checks), `ruvio.example.toml`, the README and the license. `SHA256SUMS` lists the checksums. [code] On Windows, unzip `ruvio- -windows-x64.zip` and run `ruvio.exe`. On macOS, a binary downloaded by a browser is quarantined; `xattr -d com.apple.quarantine ruvio ruvio-ctl` clears it (downloads with `curl` are not quarantined). `ruvio --help` lists every flag. From source [code] The server is installed from the Docker image, a release binary, or built from this checkout; it is not published as a crate. Settings merge in this order: built-in defaults, `ruvio.toml` (template: `ruvio.example.toml`), `RUVIO_*` environment variables, then CLI flags. The file is read once, at process start. See Configuration. ## Built-in building blocks These commands run on the shard that owns the key. A key that never uses them stores nothing extra. `GET`, `SET`, and `INCR` do not consult them. | Command | What it replaces a second system for | | --- | --- | | `LEASE` / `RELEASE` | A fe