>

Redigo 一款开源的 redis driver,用于处理 redis 数据库请求, 使用 Go 语言实现。

使用 redigo 需要注意相关重要参数,因为这直接涉及到对程序性能的影响。本文总结了 redigo 的一些性能测试结果。

MaxActive 表示客户端最大能发起的连接的个数,也就是:如果客户端发起的连接数达到了 Maxactive ,再发起连接的话会等待, 而不会再创建连接。

MaxIdle 表示 pool 里面最大连接数。

测试发现,如果 MaxActive 设置得很大,反而比设置的小的时候,查询耗时多。

可能的原因是:对于简单查询(单个查询耗时极短,可能 0.几 ms)来说,创建更多的连接产生了开销, 还不如等个 0.几 ms,也就是等上一个连接回收之后,直接复用那个连接,这样所产生的耗时更少。

数据:

MaxActive 连接数 耗时 ms
100 5000 271.1 - 220.2
1000 5000 240.0 - 329.5
1000 5000 270.0 - 337.0
1000 10000 585.3 - 793.3
MaxIdle MaxActive 连接数 耗时(ms)
1000 5000 5000 268.5 - 290
1000 5000 10000 585.5 - inf
5000 5000 10000 552.5 - inf

###### 连接复用 如果连接池大小(MaxIdle)是1000, 客户端发起 1w 个连接,但是每个连接处理时间很短, 1w 中的后面几千个连接的时候前面 几百个已经处理完了,所以可以复用。最终会出现,虽然发起了 1w 个连接, 但是连接池大小却只有几百。 这个原因主要就是因为每个连接处理时间太短,从而被后面的复用了, 因此没有新开连接。