79 lines
4.3 KiB
Go
79 lines
4.3 KiB
Go
// Package define ...
|
|
//
|
|
// Description : define ...
|
|
//
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
//
|
|
// Date : 2024-06-18 16:12
|
|
package define
|
|
|
|
import redisClient "github.com/redis/go-redis/v9"
|
|
|
|
type Options struct {
|
|
DB int `json:"db" yaml:"db" ini:"db" toml:"db"` // 选择的数据库序号
|
|
Network string `json:"network" yaml:"network" ini:"network" toml:"network"` // 网络连接方式
|
|
// A seed list of host:port addresses of cluster nodes.
|
|
Addr string `json:"addr" yaml:"addr" ini:"addr" toml:"addr"` // 集群IP列表
|
|
// ClientName will execute the `CLIENT SETNAME ClientName` command for each conn.
|
|
ClientName string `json:"client_name" yaml:"client_name" ini:"client_name" toml:"client_name"` // 集群名称
|
|
|
|
Protocol int
|
|
Username string `json:"username" yaml:"username" ini:"username" toml:"username"`
|
|
Password string `json:"password" yaml:"password" ini:"password" toml:"password"`
|
|
|
|
MaxRetries int `json:"max_retries" yaml:"max_retries" ini:"max_retries" toml:"max_retries"`
|
|
MinRetryBackoff int `json:"min_retry_backoff" yaml:"min_retry_backoff" ini:"min_retry_backoff" toml:"min_retry_backoff"` // 最小重试间隔,单位 : ms
|
|
MaxRetryBackoff int `json:"max_retry_backoff" yaml:"max_retry_backoff" ini:"max_retry_backoff" toml:"max_retry_backoff"` // 最大重试时间间隔, 单位 : ms
|
|
|
|
DialTimeout int `json:"dial_timeout" yaml:"dial_timeout" ini:"dial_timeout" toml:"dial_timeout"` // 连接超时时间
|
|
ReadTimeout int `json:"read_timeout" yaml:"read_timeout" ini:"read_timeout" toml:"read_timeout"` // 读取超时时间
|
|
WriteTimeout int `json:"write_timeout" yaml:"write_timeout" ini:"write_timeout" toml:"write_timeout"` // 写入超时时间
|
|
ContextTimeoutEnabled bool `json:"context_timeout_enabled" yaml:"context_timeout_enabled" ini:"context_timeout_enabled" toml:"context_timeout_enabled"`
|
|
|
|
PoolFIFO bool `json:"pool_fifo" yaml:"pool_fifo" ini:"pool_fifo" toml:"pool_fifo"`
|
|
PoolSize int `json:"pool_size" yaml:"pool_size" ini:"pool_size" toml:"pool_size"` // applies per cluster node and not for the whole cluster
|
|
PoolTimeout int `json:"pool_timeout" yaml:"pool_timeout" ini:"pool_timeout" toml:"pool_timeout"` // 单位 : ms
|
|
MinIdleConn int `json:"min_idle_conn" yaml:"min_idle_conn" ini:"min_idle_conn" toml:"min_idle_conn"` // 最小空闲连接数
|
|
MaxIdleConn int `json:"max_idle_conn" yaml:"max_idle_conn" ini:"max_idle_conn" toml:"max_idle_conn"` // 最大空闲连接数
|
|
MaxActiveConn int `json:"max_active_conn" yaml:"max_active_conn" ini:"max_active_conn" toml:"max_active_conn"` // applies per cluster node and not for the whole cluster
|
|
ConnMaxIdleTime int `json:"conn_max_idle_time" yaml:"conn_max_idle_time" ini:"conn_max_idle_time" toml:"conn_max_idle_time"` // 连接最大空闲时长, 单位 : s
|
|
ConnMaxLifetime int `json:"conn_max_lifetime" yaml:"conn_max_lifetime" ini:"conn_max_lifetime" toml:"conn_max_lifetime"` // 连接最大存活时长, 单位ms
|
|
|
|
DisableIdentity bool `json:"disable_identity" yaml:"disable_identity" ini:"disable_identity" toml:"disable_identity"` // Disable set-lib on connect. Default is false.
|
|
|
|
IdentitySuffix string `json:"identity_suffix" yaml:"identity_suffix" ini:"identity_suffix" toml:"identity_suffix"` // Add suffix to client name. Default is empty.
|
|
}
|
|
|
|
// Config 数据库连接配置
|
|
//
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
//
|
|
// Date : 15:59 2024/10/8
|
|
type Config struct {
|
|
ReadOnly bool `json:"readonly" yaml:"readonly" ini:"readonly" toml:"readonly"`
|
|
Master *Options `json:"master" yaml:"master" ini:"master" toml:"master"` // 主库配置
|
|
Slave *Options `json:"slave" yaml:"slave" ini:"slave" toml:"slave"` // 主库配置
|
|
}
|
|
|
|
// ClientInfo 客户端连接信息
|
|
//
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
//
|
|
// Date : 16:06 2024/10/8
|
|
type ClientInfo struct {
|
|
ReadOnly bool // 是否只读
|
|
Master *redisClient.Client // 主库连接
|
|
Slave *redisClient.Client // 从库连接
|
|
}
|
|
|
|
func (cf *ClientInfo) MasterClient() *redisClient.Client {
|
|
return cf.Master
|
|
}
|
|
|
|
func (cf *ClientInfo) SlaveClient() *redisClient.Client {
|
|
if nil != cf.Slave {
|
|
return cf.Slave
|
|
}
|
|
return cf.Master
|
|
}
|