Module storage

Module storage 

Source
Expand description

Storage Engine Module

This module provides the core storage functionality for FlashKV. It includes a thread-safe, sharded key-value store with TTL support and a background expiry sweeper.

§Architecture

┌─────────────────────────────────────────────────────────────┐
│                     StorageEngine                           │
│  ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐           │
│  │ Shard 0 │ │ Shard 1 │ │ Shard 2 │ │...64    │           │
│  │ RwLock  │ │ RwLock  │ │ RwLock  │ │ shards  │           │
│  └─────────┘ └─────────┘ └─────────┘ └─────────┘           │
└─────────────────────────────────────────────────────────────┘
                           ▲
                           │
             ┌─────────────┴─────────────┐
             │     ExpirySweeper         │
             │  (Background Tokio Task)  │
             └───────────────────────────┘

§Features

  • Sharded Storage: 64 independent shards reduce lock contention
  • RwLock: Multiple concurrent readers, exclusive writers
  • TTL Support: Keys can have time-to-live expiry
  • Lazy Expiry: Expired keys are cleaned on access
  • Active Expiry: Background sweeper cleans orphaned expired keys

§Example

use flashkv::storage::{StorageEngine, ExpirySweeper, ExpiryConfig};
use bytes::Bytes;
use std::sync::Arc;
use std::time::Duration;

// Create the storage engine
let engine = Arc::new(StorageEngine::new());

// Basic operations
engine.set(Bytes::from("name"), Bytes::from("Ariz"));
let value = engine.get(&Bytes::from("name"));
assert_eq!(value, Some(Bytes::from("Ariz")));

// Set with TTL
engine.set_with_ttl(
    Bytes::from("session"),
    Bytes::from("token123"),
    Duration::from_secs(3600)
);

Re-exports§

pub use engine::Entry;
pub use engine::MemoryInfo;
pub use engine::StorageEngine;
pub use engine::StorageStats;
pub use expiry::start_expiry_sweeper;
pub use expiry::ExpiryConfig;
pub use expiry::ExpirySweeper;

Modules§

engine
Thread-Safe Storage Engine with Expiry Support
expiry
Background Expiry Sweeper