package confignosql import ( "context" "fmt" "github.com/redis/go-redis/v9" ) type RedisSetUp struct { MasterRedis RedisConfitSetUp `mapstructure:"master" json:"master" yaml:"master"` //主数据库 MasterRedis1 RedisConfitSetUp `mapstructure:"master1" json:"master1" yaml:"master1"` //主数据库 MasterRedis2 RedisConfitSetUp `mapstructure:"master2" json:"master2" yaml:"master2"` //主数据库 MasterRedis3 RedisConfitSetUp `mapstructure:"master3" json:"master3" yaml:"master3"` //主数据库 MasterRedis4 RedisConfitSetUp `mapstructure:"master4" json:"master4" yaml:"master4"` //主数据库 MasterRedis5 RedisConfitSetUp `mapstructure:"master5" json:"master5" yaml:"master5"` //主数据库 RedisCluster RedisConfitSetUp `mapstructure:"redisCluster" json:"redisCluster" yaml:"redisCluster"` //内网集群 } type RedisConfitSetUp struct { UrlPath string `mapstructure:"url_path" json:"url_path" yaml:"url_path"` // 服务器地址 Port int `mapstructure:"port" json:"port" yaml:"port"` // 端口 Name int `mapstructure:"name" json:"name" yaml:"name"` // 数据库名称 PassWord string `mapstructure:"password" json:"password" yaml:"password"` // 密码 UrlPathList []string `mapstructure:"url_path_list" json:"url_path_list"` } func (r *RedisConfitSetUp) OpenRedis() *redis.Client { address := fmt.Sprintf("%v:%v", r.UrlPath, r.Port) fmt.Printf("开启%v Redis库 %v\n", address, r.Name) redisClient := redis.NewClient(&redis.Options{ Addr: address, Password: r.PassWord, DB: r.Name, }) pingLink, err := redisClient.Ping(context.Background()).Result() if err != nil { fmt.Printf("%v Redis链接失败!原因:%v\n", r.Name, err) } else { fmt.Printf("%v Redis链接成功!==%v===>%v\n", r.Name, r.UrlPath, pingLink) } return redisClient } /* * @ 作者: 秦东 @ 时间: 2023-12-13 10:12:38 @ 功能: 链接redis集群 @ 参数 # @ 返回值 # @ 方法原型 # */ func (r *RedisConfitSetUp) OpenRedisColony() *redis.ClusterClient { fmt.Printf("开启%v Redis集群库 %v\n", r.UrlPathList, r.Name) redisClient := redis.NewClusterClient(&redis.ClusterOptions{ Addrs: r.UrlPathList, Password: r.PassWord, RouteRandomly: true, // DB: r.Name, }) pingLink, err := redisClient.Ping(context.Background()).Result() if err != nil { fmt.Printf("%v Redis集群链接失败!原因:%v\n", r.Name, err) } else { fmt.Printf("%v Redis集群链接成功!==%v===>%v\n", r.Name, r.UrlPath, pingLink) } return redisClient }