首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >actix-web使用redis连接池。

actix-web使用redis连接池。
EN

Stack Overflow用户
提问于 2022-04-23 01:58:14
回答 1查看 633关注 0票数 1

我在actix-web 4中使用actix-web 4

代码语言:javascript
复制
actix-web = "4"
redis = { version = "0.21", features = ["r2d2", "cluster", "connection-manager", "tokio-comp", "tokio-native-tls-comp"] }

我主要创建了redis客户端。

代码语言:javascript
复制
#[actix_web::main]
async fn main() -> std::io::Result<()> {
    let redis_client = redis::Client::open("redis://127.0.0.1:6379/").expect("err");
    let serve = HttpServer::new(move || {
        App::new()
            .app_data(web::Data::new(redis_client.clone()))
    });
}

然后在路由中获取这个redis客户端。

代码语言:javascript
复制
pub async fn list(
    query: web::Query<ListRequest>,
    redis_client: web::Data<redis::Client>,
) -> HttpResult {
    let mut con = redis_client.get_tokio_connection().await.map_err(hje)?;
    let _: () = con.set("my_key", 42).await.map_err(hje)?;
}

上面的代码工作正常,但是我想知道如何使用r2d2来创建一个redis连接池,而不是单个连接。

我在文档中发现可以支持r2d2,但我不知道如何使用它,您能帮我吗?

EN

回答 1

Stack Overflow用户

发布于 2022-04-23 03:01:16

"r2d2"特性将为redis::Client实现r2d2::ManageConnection,这意味着您可以创建如下所示的池:

代码语言:javascript
复制
r2d2::Pool::new(redis_client).unwrap();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71976234

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档