
# Go-redis客户端连接Redis（Go）
本章节介绍使用go-redis客户端连接Redis实例的方法。更多的客户端的使用方法请参考[Redis客户端](https://redis.io/clients)。
以下操作以通过弹性云服务器上的客户端连接Redis实例为例进行说明。
#### 约束与限制
如果是Redis 7.0实例，请使用[9.2.0](https://github.com/redis/go-redis/releases/tag/v9.2.0)及以上版本的go-redis客户端。
 #### 前提条件
- 已成功创建Redis实例，且状态为"运行中"。创建Redis实例的操作请参考[购买Redis实例](https://support.huaweicloud.com/usermanual-dcs/dcs-ug-0713002.html)。
- 查看并获取待连接Redis实例的IP地址/域名和端口。具体步骤请参见[查看和修改DCS实例基本信息](https://support.huaweicloud.com/usermanual-dcs/dcs-ug-0312016.html)。
- 已创建弹性云服务器，创建弹性云服务器的方法，请参见[购买弹性云服务器](https://support.huaweicloud.com/usermanual-ecs/ecs_03_7002.html)。
- 连接实例前确保客户端与Redis实例之间网络互通，具体请参考[连接Redis网络要求](https://support.huaweicloud.com/usermanual-dcs/dcs-ug-0312007.html)。
 
#### Go-redis客户端连接Redis
1. 登录弹性云服务器。 
   弹性云服务器操作系统，这里以Windows为例。
   
   
2. 在弹性云服务器安装VS 2017社区版。
3. 启动VS 2017，新建一个工程，工程名自定义，这里设置为"redisdemo"。
4. 导入go-redis的依赖包，在终端输入**go get github.com/go-redis/redis** 。
   
   图1终端输入   
   ![](https://support.huaweicloud.com/usermanual-dcs/zh-cn_image_0000001233286419.png "点击放大")
   
   
5. 编写如下代码： 
   ```
   package main
   import (
   "fmt"
   "github.com/go-redis/redis"
   )
   func main() {
   // 单机
   rdb := redis.NewClient(&redis.Options{
   Addr:     "host:port",
   Password: "********", // no password set
   DB:       0,  // use default DB
   })
   val, err := rdb.Get("key").Result()
   if err != nil {
   if err == redis.Nil {
   fmt.Println("key does not exist")
   return
   }
   panic(err)
   }
   fmt.Println(val)
   //集群
   rdbCluster := redis.NewClusterClient(&redis.ClusterOptions{
   Addrs:    []string{"host:port"},
   Password: "********",
   })
   val1, err1 := rdbCluster.Get("key").Result()
   if err1 != nil {
   if err == redis.Nil {
   fmt.Println("key does not exist")
   return
   }
   panic(err)
   }
   fmt.Println(val1)
   }
   ```
   其中，**host:port** 分别为Redis实例的IP地址/域名以及端口。IP地址/域名和端口获取见[前提条件]，请按实际情况修改后执行。\*\*\*\*\*\*\*\*为创建Redis实例时自定义的密码，请按实际情况修改后执行。如果使用实例创建的ACL账号连接，实例密码需要配置为"账号名称:账号密码"。创建或查看ACL账号，请参见[配置Redis ACL访问账号](https://support.huaweicloud.com/usermanual-dcs/dcs-ug-221220.html)。如果实例为免密访问，则省略命令中的密码配置。
   
   
6. 执行**go build -o test** **.exe** **main.go** 命令进行打包，如打包名为**test** 可执行文件。
   
   ![](https://support.huaweicloud.com/usermanual-dcs/public_sys-resources/caution_3.0-zh-cn.png)
   若打包后需要在Linux系统下运行则需要在打包前设置：
   **set GOARCH=amd64**
   **set GOOS=linux**
   
   
7. 执行**.\\test** **.exe** 连接实例，连接成功后返回如下。
   
   ```
   .\test.exe
   key does not exist
   ```
   
   
 
#### 相关文档
如果Redis连接过程出现问题，请参见[Redis连接失败问题排查和解决](https://support.huaweicloud.com/trouble-dcs/dcs-trouble-0715001.html)。
