#redis #pool #redis-cluster #tokio

redis_pool

提供 Redis 客户端和集群客户端池的库

7 个版本 (4 个破坏性更新)

0.5.1 2024年8月20日
0.5.0 2024年7月31日
0.4.0 2024年4月12日
0.3.0 2023年12月21日
0.1.1 2023年9月7日

#1081数据库接口

Download history 34/week @ 2024-05-03 19/week @ 2024-05-10 57/week @ 2024-05-17 68/week @ 2024-05-24 151/week @ 2024-05-31 100/week @ 2024-06-07 57/week @ 2024-06-14 35/week @ 2024-06-21 81/week @ 2024-06-28 42/week @ 2024-07-05 79/week @ 2024-07-12 72/week @ 2024-07-19 194/week @ 2024-07-26 164/week @ 2024-08-02 86/week @ 2024-08-09 234/week @ 2024-08-16

每月685 次下载
用于 2 crates

MIT/Apache

17KB
287

RedisPool

提供 Redis 池的库。

crates.io docs.rs Minimum Rust Version Discord

许可证

该项目受以下任一许可证的许可:Apache 许可证 2.0 版、zlib 许可证或 MIT 许可证,您可选择。

帮助

如果您需要有关此库的帮助或提出建议,请访问我们的 Discord 群组

安装

RedisPool 使用 tokio 运行时。

# Cargo.toml
[dependencies]
redis_pool = "0.5.0"

Cargo 功能标志

cluster:启用 Redis 集群客户端和连接。

示例

use redis_pool::{RedisPool, SingleRedisPool};
use axum::{Router, routing::get, extract::State};
use tokio::net::TcpListener;

#[tokio::main]
async fn main() {
    let redis_url = "redis://default:[email protected]:6379/0";
    let client = redis::Client::open(redis_url).expect("Error while testing the connection");
    let pool = RedisPool::from(client);

    // build our application with some routes
    let app = Router::new()
        .route("/test", get(test_pool))
        .with_state(pool);

    // run it
    let listener = TcpListener::bind("127.0.0.1:3000").await.unwrap();
    axum::serve(listener, app).await.unwrap();
}

async fn test_pool(State(pool): State<SingleRedisPool>) -> String {
    let mut connection = pool.acquire().await.unwrap();
    let _: () = redis::pipe()
            .set(0, "Hello")
            .ignore()
            .query_async(&mut connection)
            .await
            .unwrap();

    redis::cmd("GET").arg(0).query_async(&mut connection).await.unwrap()
}

运行测试

Docker 必须安装,因为此库利用 testcontainers 启动 redis 实例。此外,docker 目录中的镜像需要构建并在您的本地注册表中可访问;这可以通过运行 ./docker/build.sh 完成。

依赖项

~7–16MB
~226K SLoC