func NewRedisClient(config *Config) (*RedisClient, error) { var client *redis.Client if config.RedisSentinel { client = redis.NewFailoverClient(&redis.FailoverOptions{ MasterName: config.RedisMasterName, SentinelAddrs: []string{config.RedisAddr}, Password: config.RedisPassword, DB: config.RedisDB, }) } else { client = redis.NewClient(&redis.Options{ Addr: config.RedisAddr, Password: config.RedisPassword, DB: config.RedisDB, }) } ps, err := client.Subscribe(channelName) if err != nil { return nil, err } rc := &RedisClient{ client: client, pubsub: ps, } go rc.Receive() return rc, nil }