wedb_embed 0.1.1

Embedded database engine providing Redis-like APIs, built on fjall / 嵌入式数据库引擎,提供类似 Redis 的接口,底层基于 fjall 开发
Documentation
/// 默认 Bloom Filter 配置常量
pub const DEFAULT_BF_CAPACITY: u32 = 100;
pub const DEFAULT_BF_ERROR_RATE: f64 = 0.01;
pub const DEFAULT_BF_EXPANSION: u16 = 2;

/// 默认 Cuckoo Filter 配置常量
pub const DEFAULT_CF_CAPACITY: u64 = 1024;
pub const DEFAULT_CF_BUCKET_SIZE: u8 = 2;
pub const DEFAULT_CF_MAX_ITERATIONS: u16 = 20;
pub const DEFAULT_CF_EXPANSION: u16 = 1;
pub const DEFAULT_CF_PAGE_SIZE: u32 = 2048;
pub const MAX_CF_EXPANSION: u16 = 32768;

/// BF.INSERT 命令选项
#[derive(Debug, Clone, PartialEq, bitcode::Encode, bitcode::Decode)]
pub enum BfInsert {
    Capacity(u32),
    Error(f64),
    Expansion(u16),
    NoCreate,
    NonScaling,
}

/// BF.RESERVE 命令选项
#[derive(Debug, Clone, Copy, PartialEq, Eq, bitcode::Encode, bitcode::Decode)]
pub enum BfReserve {
    Expansion(u16),
    NonScaling,
}

/// 布隆过滤器单项添加结果(对标 Kvrocks BloomFilterAddResult)
#[derive(Debug, Clone, Copy, PartialEq, Eq, bitcode::Encode, bitcode::Decode)]
pub enum BloomFilterAddResult {
    Ok,
    Exist,
    Full,
}

/// 布隆过滤器信息查询字段类型(对标 Kvrocks BloomInfoType)
#[derive(Debug, Clone, Copy, PartialEq, Eq, bitcode::Encode, bitcode::Decode)]
pub enum BloomInfoType {
    All,
    Capacity,
    Size,
    Filters,
    Items,
    Expansion,
}

/// 布隆过滤器插入配置选项(对标 Kvrocks BloomFilterInsertOptions)
#[derive(Debug, Clone, PartialEq, bitcode::Encode, bitcode::Decode)]
pub struct BloomFilterInsertOptions {
    pub capacity: u32,
    pub error_rate: f64,
    pub expansion: u16,
    pub auto_create: bool,
}

impl Default for BloomFilterInsertOptions {
    #[inline]
    fn default() -> Self {
        Self {
            capacity: DEFAULT_BF_CAPACITY,
            error_rate: DEFAULT_BF_ERROR_RATE,
            expansion: DEFAULT_BF_EXPANSION,
            auto_create: true,
        }
    }
}

/// 布隆过滤器信息快照(对标 Kvrocks BloomFilterInfo)
#[derive(Debug, Clone, PartialEq, Eq, bitcode::Encode, bitcode::Decode)]
pub struct BloomFilterInfo {
    pub capacity: u32,
    pub bloom_bytes: u32,
    pub n_filters: u16,
    pub size: u64,
    pub expansion: u16,
}

/// CF.INSERT 命令选项
#[derive(Debug, Clone, PartialEq, Eq, bitcode::Encode, bitcode::Decode)]
pub enum CfInsert {
    Capacity(u64),
    NoCreate,
}

/// CF.RESERVE 命令选项
#[derive(Debug, Clone, Copy, PartialEq, Eq, bitcode::Encode, bitcode::Decode)]
pub enum CfReserve {
    BucketSize(u8),
    MaxIterations(u16),
    Expansion(u16),
}

/// 布谷鸟过滤器插入配置选项(对标 Kvrocks CuckooFilterInsertOptions)
#[derive(Debug, Clone, PartialEq, Eq, bitcode::Encode, bitcode::Decode)]
pub struct CuckooFilterInsertOptions {
    pub capacity: u64,
    pub bucket_size: u8,
    pub max_iterations: u16,
    pub expansion: u16,
    pub page_size: u32,
    pub auto_create: bool,
    pub nx: bool,
}

impl Default for CuckooFilterInsertOptions {
    #[inline]
    fn default() -> Self {
        Self {
            capacity: DEFAULT_CF_CAPACITY,
            bucket_size: DEFAULT_CF_BUCKET_SIZE,
            max_iterations: DEFAULT_CF_MAX_ITERATIONS,
            expansion: DEFAULT_CF_EXPANSION,
            page_size: DEFAULT_CF_PAGE_SIZE,
            auto_create: true,
            nx: false,
        }
    }
}

/// 布谷鸟过滤器信息快照(对标 Kvrocks CuckooFilterInfo)
#[derive(Debug, Clone, PartialEq, Eq, bitcode::Encode, bitcode::Decode)]
pub struct CuckooFilterInfo {
    pub size: u64,
    pub num_buckets: u64,
    pub num_filters: u16,
    pub num_items_inserted: u64,
    pub num_items_deleted: u64,
    pub bucket_size: u8,
    pub expansion: u16,
    pub max_iterations: u16,
}