kip_db 0.1.2-alpha.26.fix1

轻量级、异步 基于LSM Leveled Compaction K-V数据库
Documentation
use bytes::Bytes;
use kip_db::kernel::lsm::iterator::Iter;
use kip_db::kernel::lsm::mvcc::CheckType;
use kip_db::kernel::lsm::storage::{Config, KipStorage};
use kip_db::kernel::Storage;
use kip_db::KernelError;
use std::collections::Bound;
use tempfile::TempDir;

#[tokio::main]
async fn main() -> Result<(), KernelError> {
    let temp_dir = TempDir::new().expect("unable to create temporary working directory");
    let config = Config::new(temp_dir.into_path()).enable_level_0_memorization();
    let kip_storage = KipStorage::open_with_config(config).await?;

    println!("Set KeyValue -> (key_1, value_1)");
    kip_storage
        .set(
            Bytes::copy_from_slice(b"key_1"),
            Bytes::copy_from_slice(b"value_1"),
        )
        .await?;
    println!("Set KeyValue -> (key_2, value_2)");
    kip_storage
        .set(
            Bytes::copy_from_slice(b"key_2"),
            Bytes::copy_from_slice(b"value_2"),
        )
        .await?;
    println!("Set KeyValue -> (key_3, value_3)");
    kip_storage
        .set(
            Bytes::copy_from_slice(b"key_3"),
            Bytes::copy_from_slice(b"value_3"),
        )
        .await?;

    println!("New Transaction");
    let tx = kip_storage.new_transaction(CheckType::Optimistic).await;

    println!("Iter without key_3 By Transaction:");
    let mut iter = tx.iter(Bound::Unbounded, Bound::Excluded(b"key_3"))?;

    while let Some(item) = iter.try_next()? {
        println!("Item: {:?}", item);
    }

    Ok(())
}