Skip to content

Latest commit

 

History

History
49 lines (37 loc) · 866 Bytes

README.md

File metadata and controls

49 lines (37 loc) · 866 Bytes

A LSM based Key/Value stroage engine.

  • MemTable
  • SSTable
  • Log
  • Compaction
  • Bloom Filter
  • Cache
  • Separating keys from values
  • Write batch
  • MVCC
  • GC

Usage

use anyhow::Result;
use ckv::{lsm::Lsm, write_batch::WriteBatch, Options};

fn main() -> Result<()> {
    let opt = Options::default_opt()
        .work_dir("work_dir/lsm")
        .mem_size(1 << 12)
        .kv_separate_threshold(4);

    let lsm = Lsm::open(opt);
    // set a key value
    lsm.put(b"key1", b"val1")?;
    // get value
    lsm.get(b"key1")?;

    // operation by WriteBatch
    let mut wb = WriteBatch::default();
    wb.put(b"key2", b"val2");
    wb.put(b"key3", b"val3");
    wb.delete(b"key1");
    lsm.write_batch(&wb)?;

    lsm.get(b"key1")?;
    Ok(())
}

reference