Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
R2d2 | 1,312 | 746 | 249 | 2 months ago | 42 | June 21, 2022 | 20 | apache-2.0 | Rust | |
A generic connection pool for Rust | ||||||||||
Memcached.scala | 15 | 12 years ago | Scala | |||||||
simple scala memcached client | ||||||||||
Scala Memcached | 6 | 12 years ago | Scala | |||||||
Simple memcached client lib ,just for exercise | ||||||||||
Riakcached | 3 | 4 years ago | 1 | mit | Python | |||||
A memcache like client for Riak | ||||||||||
Mod_memcache | 2 | 12 years ago | C | |||||||
一个bug级别的nginx模块.用来理解nginx模块的工作原理 | ||||||||||
Nats Streaming Proxy | 2 | 5 years ago | mit | Go | ||||||
Write to the NATS Streaming via Memcached protocol | ||||||||||
Tspool | 1 | 7 years ago | Scala | |||||||
Thrift connection pool for scala | ||||||||||
Spymemcache Commonpool 2 | 1 | 9 years ago | bsd-2-clause | Java | ||||||
Connection pooling for spymemcache using common pool 2.x | ||||||||||
Tornadobmc | 1 | 9 years ago | mit | Python | ||||||
Tornado Binary MemCache |
A generic connection pool for Rust.
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
|
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.
})
}
}
Licensed under either of
at your option.
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.