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
Ok(Some("bar"))
> put baz spam
> put lala baba
> put baz egg
> lst
lala
foo
baz
> get baz
Ok(Some("egg"))
> quit
$ less /tmp/bitrust_data/bitrust.logYou can view the logs in a separate window by tailing bitrust.log in the
datadir.
$ tail -f /tmp/bitrust_data/bitrust.log
- Data files are stored as
N.datawhereNis an integer starting at 0. .activefilecontains the name of the current "active" log file (i.e., the one taking writes). All other datafiles are immutable.bitrust.logcontains logs. Level of logging is controlled by the-l/--loglevelswitch.