123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- package comopts
- import (
- "github.com/spf13/pflag"
- )
- // RedisOptions redis配置
- type RedisOptions struct {
- Host string `json:"host" mapstructure:"host" description:"Redis service host address"`
- Port int `json:"port"`
- Addrs []string `json:"addrs" mapstructure:"addrs"`
- Username string `json:"username" mapstructure:"username"`
- Password string `json:"password" mapstructure:"password"`
- Database int `json:"database" mapstructure:"database"`
- MasterName string `json:"master-name" mapstructure:"master-name"`
- MaxIdle int `json:"optimisation-max-idle" mapstructure:"optimisation-max-idle"`
- MaxActive int `json:"optimisation-max-active" mapstructure:"optimisation-max-active"`
- Timeout int `json:"timeout" mapstructure:"timeout"`
- EnableCluster bool `json:"enable-cluster" mapstructure:"enable-cluster"`
- UseSSL bool `json:"use-ssl" mapstructure:"use-ssl"`
- SSLInsecureSkipVerify bool `json:"ssl-insecure-skip-verify" mapstructure:"ssl-insecure-skip-verify"`
- }
- func NewRedisOptions() *RedisOptions {
- return &RedisOptions{
- Host: "127.0.0.1",
- Port: 6379,
- Addrs: []string{},
- Username: "",
- Password: "",
- Database: 0,
- MasterName: "",
- MaxIdle: 2000,
- MaxActive: 4000,
- Timeout: 0,
- EnableCluster: false,
- UseSSL: false,
- SSLInsecureSkipVerify: false,
- }
- }
- func (o *RedisOptions) Validate() []error {
- errs := []error{}
- return errs
- }
- func (o *RedisOptions) AddFlags(fs *pflag.FlagSet) {
- fs.StringVar(&o.Host, "redis.host", o.Host, "Hostname of your Redis server.")
- fs.IntVar(&o.Port, "redis.port", o.Port, "The port the Redis server is listening on.")
- fs.StringSliceVar(&o.Addrs, "redis.addrs", o.Addrs, "A set of redis address(format: 127.0.0.1:6379).")
- fs.StringVar(&o.Username, "redis.username", o.Username, "Username for access to redis service.")
- fs.StringVar(&o.Password, "redis.password", o.Password, "Optional auth password for Redis db.")
- fs.IntVar(&o.Database, "redis.database", o.Database, ""+
- "By default, the database is 0. Setting the database is not supported with redis cluster. "+
- "As such, if you have --redis.enable-cluster=true, then this value should be omitted or explicitly set to 0.")
- fs.StringVar(&o.MasterName, "redis.master-name", o.MasterName, "The name of master redis instance.")
- fs.IntVar(&o.MaxIdle, "redis.optimisation-max-idle", o.MaxIdle, ""+
- "This setting will configure how many connections are maintained in the pool when idle (no traffic). "+
- "Set the --redis.optimisation-max-active to something large, we usually leave it at around 2000 for "+
- "HA deployments.")
- fs.IntVar(&o.MaxActive, "redis.optimisation-max-active", o.MaxActive, ""+
- "In order to not over commit connections to the Redis server, we may limit the total "+
- "number of active connections to Redis. We recommend for production use to set this to around 4000.")
- fs.IntVar(&o.Timeout, "redis.timeout", o.Timeout, "Timeout (in seconds) when connecting to redis service.")
- fs.BoolVar(&o.EnableCluster, "redis.enable-cluster", o.EnableCluster, ""+
- "If you are using Redis cluster, enable it here to enable the slots mode.")
- fs.BoolVar(&o.UseSSL, "redis.use-ssl", o.UseSSL, ""+
- "If set, IAM will assume the connection to Redis is encrypted. "+
- "(use with Redis providers that support in-transit encryption).")
- fs.BoolVar(&o.SSLInsecureSkipVerify, "redis.ssl-insecure-skip-verify", o.SSLInsecureSkipVerify, ""+
- "Allows usage of self-signed certificates when connecting to an encrypted Redis database.")
- }
|