97 lines
3.2 KiB
Go
97 lines
3.2 KiB
Go
|
//
|
||
|
// Copyright (C) 2021 IOTech Ltd
|
||
|
//
|
||
|
// SPDX-License-Identifier: Apache-2.0
|
||
|
|
||
|
package config
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"crypto/tls"
|
||
|
"net"
|
||
|
"time"
|
||
|
)
|
||
|
|
||
|
type RedisConfig struct {
|
||
|
Enable bool
|
||
|
// The network type, either tcp or unix.
|
||
|
// Default is tcp.
|
||
|
Network string
|
||
|
// host:port address.
|
||
|
Addr string
|
||
|
|
||
|
// Dialer creates new network connection and has priority over
|
||
|
// Network and Addr options.
|
||
|
Dialer func(ctx context.Context, network, addr string) (net.Conn, error)
|
||
|
|
||
|
// Hook that is called when new connection is established.
|
||
|
//OnConnect func(ctx context.Context, cn *Conn) error
|
||
|
|
||
|
// Use the specified Username to authenticate the current connection
|
||
|
// with one of the connections defined in the ACL list when connecting
|
||
|
// to a Redis 6.0 instance, or greater, that is using the Redis ACL system.
|
||
|
Username string
|
||
|
// Optional password. Must match the password specified in the
|
||
|
// requirepass server configuration option (if connecting to a Redis 5.0 instance, or lower),
|
||
|
// or the User Password when connecting to a Redis 6.0 instance, or greater,
|
||
|
// that is using the Redis ACL system.
|
||
|
Password string
|
||
|
|
||
|
// Database to be selected after connecting to the server.
|
||
|
DB int
|
||
|
|
||
|
// Maximum number of retries before giving up.
|
||
|
// Default is 3 retries; -1 (not 0) disables retries.
|
||
|
MaxRetries int
|
||
|
// Minimum backoff between each retry.
|
||
|
// Default is 8 milliseconds; -1 disables backoff.
|
||
|
MinRetryBackoff time.Duration
|
||
|
// Maximum backoff between each retry.
|
||
|
// Default is 512 milliseconds; -1 disables backoff.
|
||
|
MaxRetryBackoff time.Duration
|
||
|
|
||
|
// Dial timeout for establishing new connections.
|
||
|
// Default is 5 seconds.
|
||
|
DialTimeout time.Duration
|
||
|
// 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 time.Duration
|
||
|
// Timeout for socket writes. If reached, commands will fail
|
||
|
// with a timeout instead of blocking.
|
||
|
// Default is ReadTimeout.
|
||
|
WriteTimeout time.Duration
|
||
|
|
||
|
// 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 time.Duration
|
||
|
// Amount of time client waits for connection if all connections
|
||
|
// are busy before returning an error.
|
||
|
// Default is ReadTimeout + 1 second.
|
||
|
PoolTimeout time.Duration
|
||
|
// 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 time.Duration
|
||
|
// 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 time.Duration
|
||
|
|
||
|
// Enables read only queries on slave nodes.
|
||
|
readOnly bool
|
||
|
|
||
|
// TLS Config to use. When set TLS will be negotiated.
|
||
|
TLSConfig *tls.Config
|
||
|
|
||
|
// Limiter interface used to implemented circuit breaker or rate limiter.
|
||
|
//Limiter Limiter
|
||
|
}
|