[][src]Crate redis_async_pool

Deadpool manager for asynchronous Redis connections

redis-async-pool implements a deadpool manager for asynchronous connections of the redis crate. Connections returned by
the pool can be used as regular redis::aio::Connection.

Foreword

You may not need of a pool of async connections to Redis. Depending on your workload, a multiplexed connection will be way faster. Using the ConnectionManager provided by the redis crate, you can achieve very high performances without pooling connections.

Features

  • runtime agnostic (tested with tokio & async-std)
  • optional check of connection on recycle
  • optional ttl on connections

Example

use redis::AsyncCommands;
use redis_async_pool::{RedisConnectionManager, RedisPool};

// Create a pool of maximum 5 connections, checked on reuse without ttl.

let pool = RedisPool::new(
    RedisConnectionManager::new(redis::Client::open("redis://localhost:6379")?, true, None),
    5,
);

// get a connection with the get() async method and use it as regular redis connection
let mut con = pool.get().await?;
con.set(b"key", b"value").await?;
let value: Vec<u8> = con.get(b"key").await?;
assert_eq!(value, b"value");

You can set a ttl for each created connection by the pool, this helps avoiding huge memory consumption when keeping many connections open during a too long time.

Re-exports

pub use deadpool;

Structs

RedisConnection

The connection created by the pool manager.

RedisConnectionManager

Manages creation and destruction of redis connections.

Enums

Ttl

Time to live of a connection

Type Definitions

RedisPool

The redis connection pool