6个版本

0.2.4 2020年12月1日
0.2.3 2020年11月30日
0.1.0 2020年11月28日

#7 in #deadpool

MIT/Apache

16KB
94

异步Redis连接的Deadpool管理器 docs.rs 构建状态

redis-async-pool实现了对redis crate异步连接的Deadpool管理。由池返回的连接可以用作常规的redis::aio::Connection

前言

您可能不需要Redis的异步连接池。根据您的负载,复用连接会快得多。使用redis crate提供的ConnectionManager,您可以在不连接池的情况下实现非常高的性能。

特性

  • 运行时无关(已与tokio & async-std测试)
  • 可选的回收时连接检查
  • 可选的连接TTL

示例

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");

您可以为池创建的每个连接设置TTL,这有助于避免在长时间保持许多打开的连接时消耗大量内存。

许可证

许可协议为以下之一

任选其一。

贡献

除非您明确表示,否则根据Apache-2.0许可证定义,您有意提交的任何贡献,均应双许可如上,无需任何附加条款或条件。

依赖

~7.5MB
~158K SLoC