wedb_standalone 0.1.0

Standalone server library for WeDb
Documentation
pub mod handler;

pub use handler::{StandaloneHandler, handle_cmd, handle_cmd_with_ctx};
pub use webc_cmd::{Cmd, ConnectionContext, ExpireCondition, RedisCommand, RedisServer};

use std::sync::Arc;
use tokio::signal::ctrl_c;
use wedb_embed::WeDb;

/// 启动 WeDb 单机版 Redis 服务器
pub async fn run_server(addr: &str, data_dir: &str) -> aok::Result<()> {
    let db = Arc::new(WeDb::open(data_dir)?);
    let handler = Arc::new(StandaloneHandler::new(db));
    let server = RedisServer::start(handler, addr.to_string()).await?;
    log::info!(
        "WeDB Standalone Redis server listening on {}",
        server.addr()
    );

    // 监听 Ctrl-C 信号以实现优雅退出
    let _ = ctrl_c().await;
    server.shutdown().await?;
    Ok(())
}