Plumb through Redis config options. (#5803)

All the options from
https://pkg.go.dev/github.com/go-redis/redis#Options (except "DB int",
which we don't use) are now available via our JSON config.
This commit is contained in:
Jacob Hoffman-Andrews 2021-11-17 17:12:11 -08:00 committed by GitHub
parent a30065edeb
commit d9245e9eda
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 59 additions and 1 deletions

View File

@ -21,6 +21,51 @@ type RedisConfig struct {
Addrs []string
// Timeout is a per-request timeout applied to all Redis requests.
Timeout cmd.ConfigDuration
// Maximum number of retries before giving up.
// Default is to not retry failed commands.
MaxRetries int
// Minimum backoff between each retry.
// Default is 8 milliseconds; -1 disables backoff.
MinRetryBackoff cmd.ConfigDuration
// Maximum backoff between each retry.
// Default is 512 milliseconds; -1 disables backoff.
MaxRetryBackoff cmd.ConfigDuration
// Dial timeout for establishing new connections.
// Default is 5 seconds.
DialTimeout cmd.ConfigDuration
// Timeout for socket reads. If reached, commands will fail
// with a timeout instead of blocking. Use value -1 for no timeout and 0 for default.
// Default is 3 seconds.
ReadTimeout cmd.ConfigDuration
// Timeout for socket writes. If reached, commands will fail
// with a timeout instead of blocking.
// Default is ReadTimeout.
WriteTimeout cmd.ConfigDuration
// Maximum number of socket connections.
// Default is 10 connections per every CPU as reported by runtime.NumCPU.
PoolSize int
// Minimum number of idle connections which is useful when establishing
// new connection is slow.
MinIdleConns int
// Connection age at which client retires (closes) the connection.
// Default is to not close aged connections.
MaxConnAge cmd.ConfigDuration
// Amount of time client waits for connection if all connections
// are busy before returning an error.
// Default is ReadTimeout + 1 second.
PoolTimeout cmd.ConfigDuration
// Amount of time after which client closes idle connections.
// Should be less than server's timeout.
// Default is 5 minutes. -1 disables idle timeout check.
IdleTimeout cmd.ConfigDuration
// Frequency of idle checks made by idle connections reaper.
// Default is 1 minute. -1 disables idle connections reaper,
// but idle connections are still discarded by the client
// if IdleTimeout is set.
IdleCheckFrequency cmd.ConfigDuration
}
func MakeClient(c *RedisConfig, clk clock.Clock) (*rocsp.WritingClient, error) {
@ -41,7 +86,20 @@ func MakeClient(c *RedisConfig, clk clock.Clock) (*rocsp.WritingClient, error) {
Username: c.Username,
Password: password,
TLSConfig: tlsConfig,
PoolSize: 100, // TODO(#5781): Make this configurable
MaxRetries: c.MaxRetries,
MinRetryBackoff: c.MinRetryBackoff.Duration,
MaxRetryBackoff: c.MaxRetryBackoff.Duration,
DialTimeout: c.DialTimeout.Duration,
ReadTimeout: c.ReadTimeout.Duration,
WriteTimeout: c.WriteTimeout.Duration,
PoolSize: c.PoolSize,
MinIdleConns: c.MinIdleConns,
MaxConnAge: c.MaxConnAge.Duration,
PoolTimeout: c.PoolTimeout.Duration,
IdleTimeout: c.IdleTimeout.Duration,
IdleCheckFrequency: c.IdleCheckFrequency.Duration,
})
return rocsp.NewWritingClient(rdb, timeout, clk), nil
}