#key-value-store #database

nightly bin+lib bitrust

A Rust implementation of Bitcask, usable as a binary or a library

1 unstable release

Uses old Rust 2015

0.1.0 May 13, 2021

#308 in Database implementations

Custom license

2.5K SLoC


This is a Rust implementation of Bitcask, a persistent key-value store for when the keyspace fits in memory. This is not a distributed datastore, but can be used as a building block for one.

This crate hasn't been stress-tested. While it should be good enough for experimentation, we make no guarantees around data durability.


$ mkdir /tmp/bitrust_data
$ cargo run -- --configfile ./example_configs/no-automerge.toml --loglevel debug
> put foo bar
> get foo
> put baz spam
> put lala baba
> put baz egg
> lst
> get baz
> quit 
$ less /tmp/bitrust_data/bitrust.log

You can view the logs in a separate window by tailing bitrust.log in the datadir.

$ tail -f /tmp/bitrust_data/bitrust.log

Data directory contents

  • Data files are stored as N.data where N is an integer starting at 0.
  • .activefile contains the name of the current "active" log file (i.e., the one taking writes). All other datafiles are immutable.
  • bitrust.log contains logs. Level of logging is controlled by the -l/--loglevel switch.


~307K SLoC