#connection-pool #redis

mobc-redis

Redis support for the mobc connection pool

18 releases

0.8.2 Nov 20, 2023
0.8.0 Jan 22, 2023
0.7.0 Jan 13, 2021
0.5.4 Nov 14, 2020
0.3.0 Nov 30, 2019

#1961 in Database interfaces

Download history 2273/week @ 2024-07-27 2527/week @ 2024-08-03 2172/week @ 2024-08-10 2426/week @ 2024-08-17 1894/week @ 2024-08-24 2061/week @ 2024-08-31 2416/week @ 2024-09-07 2145/week @ 2024-09-14 2054/week @ 2024-09-21 2090/week @ 2024-09-28 2020/week @ 2024-10-05 2431/week @ 2024-10-12 2533/week @ 2024-10-19 2498/week @ 2024-10-26 2563/week @ 2024-11-02 2601/week @ 2024-11-09

10,650 downloads per month
Used in 9 crates (5 directly)

MIT/Apache

61KB
1K SLoC

mobc-redis

crates.io

Documentation

Example

use mobc::Pool;
use mobc_redis::redis;
use redis::AsyncCommands;
use mobc_redis::RedisConnectionManager;
use std::time::Instant;

const TEST_KEY: &'static str = "mobc::redis::test";

#[tokio::main]
async fn main() {
    let client = redis::Client::open("redis://127.0.0.1/").unwrap();
    let manager = RedisConnectionManager::new(client);
    let pool = Pool::builder().max_open(20).build(manager);

    let mut conn = pool.get().await.unwrap();
    let _: () = conn.set(TEST_KEY, "hello").await.unwrap();

    const MAX: usize = 5000;

    let now = Instant::now();
    let (tx, mut rx) = tokio::sync::mpsc::channel::<usize>(5000);
    for i in 0..MAX {
        let pool = pool.clone();
        let tx_c = tx.clone();
        tokio::spawn(async move {
            let mut conn = pool.get().await.unwrap();
            let s: String = conn.get(TEST_KEY).await.unwrap();
            assert_eq!(s.as_str(), "hello");
            tx_c.send(i).await.unwrap();
        });
    }
    for _ in 0..MAX {
        rx.recv().await.unwrap();
    }

    println!("cost: {:?}", now.elapsed());
}

Runtimes

You can use either tokio, or async-std as your async runtime.

The default is tokio-comp, but you can use async-std by setting it in the mobc-redis features.

mobc-redis = { version = "0.7", default-features = false, features = ["async-std-comp"] }

Dependencies

~8–20MB
~283K SLoC