wedb_embed 0.1.2

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,
}