bb8
bb8
cargo install bb8
bb8

bb8

Full-featured async (tokio-based) postgres connection pool (like r2d2)

by Dirkjan Ochtman

0.6.1 (see all)License:MIT
cargo install bb8
Readme

bb8

Documentation Crates.io Build status codecov License: MIT

A full-featured connection pool, designed for asynchronous connections (using tokio). Originally based on r2d2.

Opening a new database connection every time one is needed is both inefficient and can lead to resource exhaustion under high traffic conditions. A connection pool maintains a set of open connections to a database, handing them out for repeated use.

bb8 is agnostic to the connection type it is managing. Implementors of the ManageConnection trait provide the database-specific logic to create and check the health of connections.

A (possibly not exhaustive) list of adapters for different backends:

Backend

Adapter Crate

tokio-postgres

bb8-postgres (in-tree)

redis

bb8-redis (in-tree)

rsmq

rsmq_async

bolt-client

bb8-bolt

diesel

bb8-diesel

tiberius

bb8-tiberius

nebula-graph-client

bb8-nebula-graph

memcache-async

bb8-memcached

lapin

bb8-lapin

Example

Using an imaginary "foodb" database.

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

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

License

Licensed under the MIT license (LICENSE).

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you shall be licensed as above, without any additional terms or conditions.

GitHub Stars

427

LAST COMMIT

9d ago

MAINTAINERS

2

CONTRIBUTORS

29

OPEN ISSUES

12

OPEN PRs

2
VersionTagPublished
0.6.1
2yrs ago
0.5.1
2yrs ago
0.6.0
2yrs ago
0.5.0
2yrs ago
No alternatives found
No tutorials found
Add a tutorial