diff --git a/pool.go b/pool.go index 08a1700..f8ba9d2 100644 --- a/pool.go +++ b/pool.go @@ -251,13 +251,13 @@ func (p *connPool) Close() (err error) { for { if p.Size() < 1 { - return + break } if e := p.remove(<-p.conns); e != nil { err = e } } - panic("not reached") + return } //------------------------------------------------------------------------------ diff --git a/redis.go b/redis.go index a1045c3..4f907d9 100644 --- a/redis.go +++ b/redis.go @@ -153,22 +153,44 @@ type options struct { } type Options struct { + // The network type, either "tcp" or "unix". + // Default: "tcp" Network string - Addr string + // The network address. + Addr string // Dialer creates new network connection and has priority over // Network and Addr options. Dialer func() (net.Conn, error) + // An optional password. Must match the password specified in the + // `requirepass` server configuration option. Password string - DB int64 + // Select a database. + // Default: 0 + DB int64 - DialTimeout time.Duration - ReadTimeout time.Duration + // Sets the deadline for establishing new connections. If reached, + // deal attepts will fail with a timeout. + DialTimeout time.Duration + // Sets the deadline for socket reads. If reached, commands will + // fail with a timeout instead of blocking. + ReadTimeout time.Duration + // Sets the deadline for socket writes. If reached, commands will + // fail with a timeout instead of blocking. WriteTimeout time.Duration - PoolSize int + // The maximum number of socket connections. + // Default: 10 + PoolSize int + // If all socket connections is the pool are busy, the pool will wait + // this amount of time for a conection to become available, before + // returning an error. + // Default: 5s PoolTimeout time.Duration + // Evict connections from the pool after they have been idle for longer + // than specified in this option. + // Default: 0 = no eviction IdleTimeout time.Duration } diff --git a/sentinel.go b/sentinel.go index 1ed2e50..936621a 100644 --- a/sentinel.go +++ b/sentinel.go @@ -12,19 +12,40 @@ import ( //------------------------------------------------------------------------------ type FailoverOptions struct { - MasterName string + // The master name. + MasterName string + // Seed addresses of sentinel nodes. SentinelAddrs []string + // An optional password. Must match the password specified in the + // `requirepass` server configuration option. Password string - DB int64 + // Select a database. + // Default: 0 + DB int64 - PoolSize int - - DialTimeout time.Duration - ReadTimeout time.Duration + // Sets the deadline for establishing new connections. If reached, + // deal attepts will fail with a timeout. + DialTimeout time.Duration + // Sets the deadline for socket reads. If reached, commands will + // fail with a timeout instead of blocking. + ReadTimeout time.Duration + // Sets the deadline for socket writes. If reached, commands will + // fail with a timeout instead of blocking. WriteTimeout time.Duration - PoolTimeout time.Duration - IdleTimeout time.Duration + + // The maximum number of socket connections. + // Default: 10 + PoolSize int + // If all socket connections is the pool are busy, the pool will wait + // this amount of time for a conection to become available, before + // returning an error. + // Default: 5s + PoolTimeout time.Duration + // Evict connections from the pool after they have been idle for longer + // than specified in this option. + // Default: 0 = no eviction + IdleTimeout time.Duration } func (opt *FailoverOptions) getPoolSize() int {