跳至主要內容

go-redis

程序员李某某原创redisgoredis客户端大约 1 分钟

go-redis

下载

go get -u github.com/go-redis/redis

连接

单机

// 定义一个RedisSingleObj结构体
type RedisSingleObj struct {
	Redis_host string
	Redis_port uint16
	Redis_auth string
	Database   int
	Db         *redis.Client
}

// 结构体InitSingleRedis方法: 用于初始化redis数据库
func (r *RedisSingleObj) InitSingleRedis() (err error) {
	// Redis连接格式拼接
	redisAddr := fmt.Sprintf("%s:%d", r.Redis_host, r.Redis_port)
	// Redis 连接对象: NewClient将客户端返回到由选项指定的Redis服务器。
	r.Db = redis.NewClient(&redis.Options{
		Addr:        redisAddr,    // redis服务ip:port
		Password:    r.Redis_auth, // redis的认证密码
		DB:          r.Database,   // 连接的database库
		IdleTimeout: 300,          // 默认Idle超时时间
		PoolSize:    100,          // 连接池
	})
	fmt.Printf("Connecting Redis : %v\n", redisAddr)

	// 验证是否连接到redis服务端
	res, err := r.Db.Ping().Result()
	if err != nil {
		fmt.Printf("Connect Failed! Err: %v\n", err)
		return err
	} else {
		fmt.Printf("Connect Successful! Ping => %v\n", res)
		return nil
	}
}

测试

func main() {
	conn := &RedisSingleObj{
		Redis_host: "127.0.0.1",
		Redis_port: 6379,
		Redis_auth: "xxoo123",
	}

	defer conn.Db.Close()

	err := conn.InitSingleRedis()
	if err != nil {
		panic(err)
	}

}

哨兵

type RedisSentinelObj struct {
  Redis_master string
	Redis_addr []string
	Redis_auth string
	Db         *redis.Client
}

// 结构体方法
func (r *RedisSentinelObj) initSentinelClient()(err error){
	r.Db = redis.NewFailoverClient(&redis.FailoverOptions{
		MasterName:    "master",
		SentinelAddrs: []string{"x.x.x.x:26379", "xx.xx.xx.xx:26379", "xxx.xxx.xxx.xxx:26379"},
	})
	_, err = rdb.Ping().Result()
	if err != nil {
		return err
	}
	return nil
}

测试

// 定义一个RedisClusterObj结构体
type RedisClusterObj struct {
	Redis_addr []string
	Redis_auth string
	Db         *redis.Client
}

// 结构体方法
func (r *RedisSingleObj) initClusterClient()(err error){
	r.Db = redis.NewClusterClient(&redis.ClusterOptions{
		Addrs: []string{":7000", ":7001", ":7002", ":7003", ":7004", ":7005"},
	})
	_, err = rdb.Ping().Result()
	if err != nil {
		return err
	}
	return nil
}
上次编辑于:
贡献者: ext.liyuanhao3