Skip to content

Commit 535c5ba

Browse files
committed
feat: add redis pool_timeout
Signed-off-by: rfyiamcool <[email protected]>
1 parent e772133 commit 535c5ba

File tree

1 file changed

+8
-0
lines changed

1 file changed

+8
-0
lines changed

cache/redis_client.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,11 @@ type RedisClientConfig struct {
6363
// Maximum number of socket connections.
6464
ConnectionPoolSize int `yaml:"connection_pool_size" category:"advanced"`
6565

66+
// Amount of time client waits for connection if all connections
67+
// are busy before returning an error.
68+
// Default is ReadTimeout + 1 second.
69+
ConnectionPoolTimeout time.Duration `yaml:"connection_pool_timeout" category:"advanced"`
70+
6671
// MinIdleConnections specifies the minimum number of idle connections which is useful when establishing
6772
// new connection is slow.
6873
MinIdleConnections int `yaml:"min_idle_connections" category:"advanced"`
@@ -111,6 +116,7 @@ func (c *RedisClientConfig) RegisterFlagsWithPrefix(prefix string, f *flag.FlagS
111116
f.DurationVar(&c.DialTimeout, prefix+"dial-timeout", time.Second*5, "Client dial timeout.")
112117
f.DurationVar(&c.ReadTimeout, prefix+"read-timeout", time.Second*3, "Client read timeout.")
113118
f.DurationVar(&c.WriteTimeout, prefix+"write-timeout", time.Second*3, "Client write timeout.")
119+
f.DurationVar(&c.ConnectionPoolTimeout, prefix+"connection-pool-timeout", time.Second*4, "Maximum duration to wait to get a connection from pool.")
114120
f.IntVar(&c.ConnectionPoolSize, prefix+"connection-pool-size", 100, "Maximum number of connections in the pool.")
115121
f.IntVar(&c.MinIdleConnections, prefix+"min-idle-connections", 10, "Minimum number of idle connections.")
116122
f.DurationVar(&c.MaxConnectionAge, prefix+"max-connection-age", 0, "Close connections older than this duration. If the value is zero, then the pool does not close connections based on age.")
@@ -162,6 +168,7 @@ func NewRedisClient(logger log.Logger, name string, config RedisClientConfig, re
162168
ReadTimeout: config.ReadTimeout,
163169
WriteTimeout: config.WriteTimeout,
164170
PoolSize: config.ConnectionPoolSize,
171+
PoolTimeout: config.ConnectionPoolTimeout,
165172
MinIdleConns: config.MinIdleConnections,
166173
MaxConnAge: config.MaxConnectionAge,
167174
IdleTimeout: config.IdleTimeout,
@@ -201,6 +208,7 @@ func NewRedisClient(logger log.Logger, name string, config RedisClientConfig, re
201208
"dial_timeout": config.DialTimeout.String(),
202209
"read_timeout": config.ReadTimeout.String(),
203210
"write_timeout": config.WriteTimeout.String(),
211+
"connection_pool_timeout": config.ConnectionPoolTimeout.String(),
204212
"connection_pool_size": strconv.Itoa(config.ConnectionPoolSize),
205213
"max_async_concurrency": strconv.Itoa(config.MaxAsyncConcurrency),
206214
"max_async_buffer_size": strconv.Itoa(config.MaxAsyncBufferSize),

0 commit comments

Comments
 (0)