#连接池 #bb8 连接 #tokio #数据库 #postgresql #适配器 #r2d2

bb8

功能齐全的异步(基于 tokio)连接池(类似于 r2d2)

19 个版本

0.8.5 2024 年 6 月 14 日
0.8.3 2024 年 2 月 1 日
0.8.1 2023 年 5 月 31 日
0.8.0 2022 年 3 月 28 日
0.3.0 2019 年 3 月 17 日

#10 in 异步

Download history 52542/week @ 2024-05-04 59864/week @ 2024-05-11 54443/week @ 2024-05-18 60509/week @ 2024-05-25 82888/week @ 2024-06-01 64560/week @ 2024-06-08 68249/week @ 2024-06-15 64002/week @ 2024-06-22 53788/week @ 2024-06-29 84702/week @ 2024-07-06 87416/week @ 2024-07-13 92371/week @ 2024-07-20 92736/week @ 2024-07-27 87955/week @ 2024-08-03 113119/week @ 2024-08-10 88209/week @ 2024-08-17

每月 394,445 次下载
用于 139 包(79 个直接使用)

MIT 许可证

43KB
916

bb8

Documentation Crates.io Build status codecov License: MIT

一个功能齐全的连接池,专为异步连接(使用 tokio)设计。最初基于 r2d2

每次需要时打开一个新的数据库连接既不高效,在高流量条件下也可能导致资源耗尽。连接池维护一组到数据库的开放连接,供重复使用。

bb8 对其管理的连接类型一无所知。实现 ManageConnection 特性的实现者提供创建和检查连接健康状态的具体数据库逻辑。

不同后端适配器(可能不完整)的列表

后端 适配器包
tokio-postgres bb8-postgres(树内)
redis bb8-redis(树内)
redis_cluster_async bb8-redis-cluster
rsmq rsmq_async
bolt-client bb8-bolt
diesel bb8-diesel
tiberius bb8-tiberius
nebula-client bb8-nebula
memcache-async bb8-memcached
lapin bb8-lapin
arangors bb8-arangodb

示例

使用一个虚构的 "foodb" 数据库。

#[tokio::main]
async fn main() {
    let manager = bb8_foodb::FooConnectionManager::new("localhost:1234");
    let pool = bb8::Pool::builder()
        .max_size(15)
        .build(manager)
        .await
        .unwrap();

    for _ in 0..20 {
        let pool = pool.clone();
        tokio::spawn(async move {
            let conn = pool.get().await.unwrap();
            // use the connection
            // it will be returned to the pool when it falls out of scope.
        });
    }
}

许可证

根据 MIT 许可证许可(LICENSE)。

贡献

除非您明确声明,否则您有意提交的任何贡献,只要包含在作品中,均应按照上述方式许可,无需任何额外条款或条件。

依赖项

~3–9.5MB
~87K SLoC