R2d2

A generic connection pool for Rust
Alternatives To R2d2
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
R2d21,3127462492 months ago42June 21, 202220apache-2.0Rust
A generic connection pool for Rust
Memcached.scala15
12 years agoScala
simple scala memcached client
Scala Memcached6
12 years agoScala
Simple memcached client lib ,just for exercise
Riakcached3
4 years ago1mitPython
A memcache like client for Riak
Mod_memcache2
12 years agoC
一个bug级别的nginx模块.用来理解nginx模块的工作原理
Nats Streaming Proxy2
5 years agomitGo
Write to the NATS Streaming via Memcached protocol
Tspool1
7 years agoScala
Thrift connection pool for scala
Spymemcache Commonpool 21
9 years agobsd-2-clauseJava
Connection pooling for spymemcache using common pool 2.x
Tornadobmc1
9 years agomitPython
Tornado Binary MemCache
Alternatives To R2d2
Select To Compare


Alternative Project Comparisons
Readme

r2d2

CircleCI

A generic connection pool for Rust.

Documentation

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.

r2d2 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 adaptors for different backends:

Backend Adaptor Crate
rust-postgres r2d2-postgres
redis-rs use r2d2 feature of redis-rs
rust-memcache r2d2-memcache
rust-mysql-simple r2d2-mysql
rusqlite r2d2-sqlite
rsfbclient r2d2-firebird
rusted-cypher r2d2-cypher
diesel diesel::r2d2 (docs)
couchdb r2d2-couchdb
mongodb (archived)
use official mongodb driver instead
r2d2-mongodb
(deprecated: official driver handles pooling internally)
odbc r2d2-odbc
jfs r2d2-jfs
oracle r2d2-oracle
ldap3 r2d2-ldap
duckdb-rs use r2d2 feature of duckdb-rs

Example

Using an imaginary "foodb" database.

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.
        })
    }
}

License

Licensed under either of

at your option.

Contribution

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

Popular Connection Pool Projects
Popular Memcached Projects
Popular Networking Categories
Related Searches

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
Rust
Memcached
Couchdb
Cypher
Odbc
Connection Pool