cberner/redb
cberner/redb has 4,931 GitHub stars and 258 forks. GitHot measured +36 in 7 days. Last checked 2026-11-11 16:06 UTC. Last push 2026-11-11.
Una base de datos de clave-valor integrada, escrita íntegramente en Rust.
What you can do
- Zero-copy, thread-safe, BTreeMap based API
- Fully ACID-compliant transactions
- MVCC support for concurrent readers & writer, without blocking
- Crash-safe by default
Crecimiento de estrellas medido
- in 24h
- Actualización retrasada
- in 7 days
- +36
- in 15 days
- Actualización retrasada
- in 1 month
- Actualización retrasada
Cambios netos en períodos que se solapan, no totales diarios. Los datos no disponibles se dejan en blanco. Las estrellas indican interés, no calidad.
README.md
Originalredb
A simple, portable, high-performance, ACID, embedded key-value store.
redb is written in pure Rust and is loosely inspired by lmdb. Data is stored in a collection of copy-on-write B+trees. For more details, see the design doc
use redb::{Database, Error, ReadableDatabase, ReadableTable, TableDefinition};
const TABLE: TableDefinition<&str, u64> = TableDefinition::new("my_data");
fn main() -> Result<(), Error> {
let db = Database::create("my_db.redb")?;
let write_txn = db.begin_write()?;
{
let mut table = write_txn.open_table(TABLE)?;
table.insert("my_key", &123)?;
}
write_txn.commit()?;
let read_txn = db.begin_read()?;
let table = read_txn.open_table(TABLE)?;
assert_eq!(table.get("my_key")?.unwrap().value(), 123);
Ok(())
}
Status
Stable and maintained.
The file format is stable, and a reasonable effort will be made to provide an upgrade path if there are any future changes to it.
Features
- Zero-copy, thread-safe,
BTreeMapbased API - Fully ACID-compliant transactions
- MVCC support for concurrent readers & writer, without blocking
- Crash-safe by default
- Savepoints and rollbacks
- Multi-process access to one database, with a single or several writer processes
no_std
Turning off the std feature, with experimental-api-5 on, builds redb without the standard
library. It needs alloc, panic = "abort", and a target with atomic compare-and-swap -- Cortex-M3
and above, but not Cortex-M0. Embedded targets abort on panic by default. Tests always unwind, so
tests run on the host need the std feature, which a dev-dependency on redb can enable. There is no
filesystem, so storage is supplied by implementing StorageBackend, which reports failures with
BackendError::Other, and passing it to Builder::create_with_backend() or
Builder::open_read_only_with_backend(). The chrono_v0_4 and uuid features require std, and
cache_metrics requires a target with 64-bit atomics.
Development
just and rootless
podman are required.
Toolchain setup, dependency vendoring, and cargo-deny checks may use network access without
compiling project dependencies. Other development recipes continue to run on
the host. Cargo build artifacts are cached in the redb-sandbox-target Podman
volume; remove that volume to force a clean sandbox build.
Benchmarks
redb has similar performance to other top embedded key-value stores such as lmdb and rocksdb
| redb | lmdb | rocksdb | fjall | sqlite | |
|---|---|---|---|---|---|
| bulk load | 17063ms | 9232ms | 13969ms | 18619ms | 15341ms |
| individual writes | 920ms | 1598ms | 2432ms | 3488ms | 7040ms |
| batch writes | 1595ms | 942ms | 451ms | 353ms | 2625ms |
| len() | 0ms | 0ms | 749ms | 1181ms | 30ms |
| random reads | 1138ms | 637ms | 2911ms | 2177ms | 4283ms |
| random reads | 934ms | 631ms | 2884ms | 2357ms | 4281ms |
| random range reads | 1174ms | 565ms | 2734ms | 2564ms | 8431ms |
| random range reads | 1173ms | 565ms | 2742ms | 2690ms | 8449ms |
| random reads (4 threads) | 1390ms | 840ms | 3995ms | 2606ms | 7000ms |
| random reads (8 threads) | 757ms | 427ms | 2147ms | 1352ms | 8123ms |
| random reads (16 threads) | 652ms | 216ms | 1478ms | 963ms | 23022ms |
| random reads (32 threads) | 410ms | 125ms | 1100ms | 576ms | 26536ms |
| removals | 23297ms | 10435ms | 6900ms | 6004ms | 10323ms |
| uncompacted size | 4.00 GiB | 2.61 GiB | 893.18 MiB | 1000.95 MiB | 1.09 GiB |
| compacted size | 1.69 GiB | 1.26 GiB | 454.71 MiB | 1000.95 MiB | 556.85 MiB |
Source code for benchmark here. Results collected on a Ryzen 9950X3D with Samsung 9100 PRO NVMe.
License
Licensed under either of
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Explorar proyectos relacionados
Asabeneh/30-Days-Of-Python
El reto de programación 30 Days of Python es una guía paso a paso para aprender el lenguaje de programación Python en 30 días. Este reto puede llevar más de 100 días. Sigue tu propio ritmo. Estos vídeos también pueden ayudarte: https://www.youtube.com/channel/UC7PNRuno1rzYPb1xLa4yktw
78,618 estrellasgrafana/grafana
Plataforma abierta y componible de observabilidad y visualización de datos. Visualiza métricas, registros y trazas de múltiples fuentes, como Prometheus, Loki, Elasticsearch, InfluxDB, Postgres y muchas más.
77,859 estrellasredis/redis
Para los desarrolladores que crean aplicaciones en tiempo real basadas en datos, Redis es la opción preferida, la más rápida y la de más funciones como caché, servidor de estructuras de datos y motor de consultas de documentos y vectores.
77,472 estrellasapache/superset
Apache Superset es una plataforma de visualización y exploración de datos.
75,495 estrellas