reids.Pool结构介绍
// github.com/garyburd/redigo/redis/pool.go
type Pool struct {
// Dial()方法返回一个连接,从在需要创建连接到的时候调用
Dial func() (Conn, error)
// TestOnBorrow()方法是一个可选项,该方法用来诊断一个连接的健康状态
TestOnBorrow func(c Conn, t time.Time) error
// 最大空闲连接数
MaxIdle int
// 一个pool所能分配的最大的连接数目
// 当设置成0的时候,该pool连接数没有限制
MaxActive int
// 空闲连接超时时间,超过超时时间的空闲连接会被关闭。
// 如果设置成0,空闲连接将不会被关闭
// 应该设置一个比redis服务端超时时间更短的时间
IdleTimeout time.Duration
// 如果Wait被设置成true,则Get()方法将会阻塞
Wait bool
// mu protects fields defined below.
mu sync.Mutex
cond *sync.Cond
closed bool
active int
// 空闲连接队列
idle list.List
}
从连接池中获取连接
// get prunes stale connections and returns a connection from the idle list or
// creates a new connection.
func (p *Pool) get() (Conn, error) {
p.mu.Lock()
//修剪i