Skip to content
/bb8Public

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

License

Notifications You must be signed in to change notification settings

djc/bb8

Repository files navigation

bb8

DocumentationCrates.ioBuild statuscodecovChatLicense: 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:

BackendAdapter Crate
tokio-postgresbb8-postgres (in-tree)
redisbb8-redis (in-tree)
redis_cluster_asyncbb8-redis-cluster
rsmqrsmq_async
bolt-clientbb8-bolt
dieseldiesel_async
tiberiusbb8-tiberius
nebula-clientbb8-nebula
memcache-asyncbb8-memcached
lapinbb8-lapin
arangorsbb8-arangodb
tonicbb8-tonic

Example

Using an imaginary "foodb" database.

#[tokio::main]asyncfnmain(){let manager = bb8_foodb::FooConnectionManager::new("localhost:1234");let pool = bb8::Pool::builder().max_size(15).build(manager).await.unwrap();for _ in0..20{let pool = pool.clone(); tokio::spawn(asyncmove{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.

About

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

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

  •  

Packages

No packages published

Languages