Expand description
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!");
Modules§
- c
- C-compatible API for the lock-free log-structured B+tree.
Structs§
- CasKey
- lock-free pagecache
A wrapper struct for a pointer to a (possibly invalid, hence inaccessible)
PageFrag
used for applying updates atomically to shared pages. - Config
- general-purpose configuration Top-level configuration for the system.
- Lock
Free Log - lock-free log-structured storage 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.
- M
- A metric collector for all rsdb instances running in this process.
- Page
Cache - lock-free pagecache A lock-free pagecache which supports fragmented pages for dramatically improving write throughput.
- Radix
- A simple lock-free radix tree.
- Stack
- A simple lock-free stack, with the ability to atomically append or entirely swap-out entries.
- Tree
- atomic lock-free tree A flash-sympathetic persistent lock-free B+ tree
- Tree
Iter - atomic lock-free tree
An iterator over keys and values in a
Tree
.
Traits§
- Log
- lock-free log-structured storage A trait for objects which facilitate log-structured storage.
- Materializer
- lock-free pagecache
A user of a
PageCache
needs to provide aMaterializer
which handles the merging of page fragments.