6个版本
0.2.4 | 2020年12月1日 |
---|---|
0.2.3 | 2020年11月30日 |
0.1.0 | 2020年11月28日 |
#7 in #deadpool
16KB
94 行
异步Redis连接的Deadpool管理器
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 License,版本2.0 (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非您明确表示,否则根据Apache-2.0许可证定义,您有意提交的任何贡献,均应双许可如上,无需任何附加条款或条件。
依赖
~7.5MB
~158K SLoC