我在actix-web 4中使用actix-web 4
actix-web = "4"
redis = { version = "0.21", features = ["r2d2", "cluster", "connection-manager", "tokio-comp", "tokio-native-tls-comp"] }我主要创建了redis客户端。
#[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客户端。
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,但我不知道如何使用它,您能帮我吗?
发布于 2022-04-23 03:01:16
"r2d2"特性将为redis::Client实现r2d2::ManageConnection,这意味着您可以创建如下所示的池:
r2d2::Pool::new(redis_client).unwrap();https://stackoverflow.com/questions/71976234
复制相似问题