Crate rsdb [] [src]

rsdb is a flash-sympathetic persistent lock-free B+ tree, pagecache, and log.

let t = rsdb::Config::default().tree();
t.set(b"yo!".to_vec(), b"v1".to_vec());
assert_eq!(t.get(b"yo!"), Some(b"v1".to_vec()));
t.cas(b"yo!".to_vec(), Some(b"v1".to_vec()), Some(b"v2".to_vec())).unwrap();
let mut iter = t.scan(b"a non-present key before yo!");
assert_eq!(iter.next(), Some((b"yo!".to_vec(), b"v2".to_vec())));
assert_eq!(iter.next(), None);
t.del(b"yo!");

Structs

Config

Top-level configuration for the system.

LockFreeLog

A sequential store which allows users to create reservations placed at known log offsets, used for writing persistent data structures that need to know where to find persisted bits in the future.

PageCache

A lock-free pagecache which supports fragmented pages for dramatically improving write throughput.

Radix

A simple lock-free radix tree.

Tree

A flash-sympathetic persistent lock-free B+ tree

TreeIter

An iterator over keys and values in a Tree.

Traits

Log

A trait for objects which facilitate log-structured storage.

Materializer

A user of a PageCache needs to provide a Materializer which handles the merging of page fragments.