42个发布版本

0.8.10 2022年6月21日
0.8.9 2020年6月30日
0.8.8 2019年12月25日
0.8.7 2019年11月26日
0.1.0 2014年11月23日

#12 in 数据库接口

Download history 89409/week @ 2024-03-14 92593/week @ 2024-03-21 82158/week @ 2024-03-28 91020/week @ 2024-04-04 92306/week @ 2024-04-11 96042/week @ 2024-04-18 93403/week @ 2024-04-25 91864/week @ 2024-05-02 99512/week @ 2024-05-09 98558/week @ 2024-05-16 93764/week @ 2024-05-23 97433/week @ 2024-05-30 94211/week @ 2024-06-06 92173/week @ 2024-06-13 83424/week @ 2024-06-20 62880/week @ 2024-06-27

350,778 每月下载量
用于 470 个Crate (260 个直接使用)

MIT/Apache

58KB
1.5K SLoC

r2d2

CircleCI

Rust的泛型连接池。

文档

每次需要时都打开一个新的数据库连接既低效,又在高流量条件下可能导致资源耗尽。连接池维护一组到数据库的打开连接,并将它们分配给重复使用。

r2d2对它所管理的连接类型一无所知。实现ManageConnection特质的实现者提供创建和检查连接健康状况的特定数据库逻辑。

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

后端 适配器Crate
rust-postgres r2d2-postgres
redis-rs 使用 redis-rsr2d2 功能
rust-memcache r2d2-memcache
rust-mysql-simple r2d2-mysql
rusqlite r2d2-sqlite
rsfbclient r2d2-firebird
rusted-cypher r2d2-cypher
diesel diesel::r2d2 (文档)
couchdb r2d2-couchdb
mongodb (存档)
请使用官方的 mongodb 驱动程序
r2d2-mongodb
(已弃用:官方驱动程序内部处理池化)
odbc r2d2-odbc
jfs r2d2-jfs
oracle r2d2-oracle
ldap3 r2d2-ldap
duckdb-rs 使用 duckdb-rsr2d2 功能

示例

使用一个假设的 "foodb" 数据库。

use std::thread;

extern crate r2d2;
extern crate r2d2_foodb;

fn main() {
    let manager = r2d2_foodb::FooConnectionManager::new("localhost:1234");
    let pool = r2d2::Pool::builder()
        .max_size(15)
        .build(manager)
        .unwrap();

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

许可证

许可协议为以下之一

任选其一。

贡献

除非你明确表示,否则你提交的任何贡献都将按照上述方式双重许可,没有任何额外的条款或条件。

依赖关系

~0.5–6MB
~13K SLoC