#connection-pool #pool #redis #async

redis_dumbpool

Redis连接池的真正愚蠢实现

2个不稳定版本

0.2.0 2021年2月19日
0.1.0 2021年2月18日

#135 in #connection-pool

Apache-2.0/MIT

10KB
161

redis_dumbpool

Redis连接池的真正愚蠢实现

为什么还需要另一个连接池crate?

我使用其他连接池crate的测试结果,发现每个Redis查询都会产生一个新的TIME_WAIT套接字,就像套接字每次都被丢弃并重新创建一样。试图证明这个问题,我最终得到了这个可以使用但不完美的实现。

它是如何工作的?

有一个主对象(Pool),存储一个Redis连接的Vec。Pool可以用活动连接的数量初始化。每次从池中请求连接时,它都会从Vec中弹出并测试,然后再返回。如果连接不可用且已达到最大连接数,在重试之前会执行异步睡眠。返回时,连接会被包裹在一个结构体中,该结构体的唯一目的是在drop时将连接返回到池中。


lib.rs:

Redis-Dumbpool

Redis连接池的真正愚蠢实现

依赖项

~6–15MB
~212K SLoC