更新时间:2024-02-08 GMT+08:00

通过Go语言连接实例

本章节主要介绍使用Go语言访问GeminiDB Redis实例的方法。

前提条件

  • 已成功创建GeminiDB Redis实例,且实例状态为“正常”。
  • 已创建弹性云服务器,创建弹性云服务器的方法,请参见《弹性云服务器快速入门》中“购买弹性云服务器”章节。
  • 弹性云服务器上已经安装GCC等编译工具。
  • 创建的弹性云服务器GeminiDB Redis实例要保证区域、可用区、VPC和安全组一致。

操作步骤

  1. 获取GeminiDB Redis实例的负载均衡地址和端口信息。

  2. 登录弹性云服务器,具体操作请参见《弹性云服务器快速入门》中“登录弹性云服务器”。
  3. 使用Golang客户端连接GeminiDB Redis实例,本文以使用go-redis SDK为例。

    • go-redis的下载地址为:https://github.com/go-redis/redis
    • 使用单机方式连接GeminiDB Redis集群
      package main
      import (
          "fmt"
          "github.com/go-redis/redis"
          "os"
      )
      func main() {
          // 认证用的用户名和密码直接写到代码中有很大的安全风险,建议在配置文件或者环境变量中存放(密码应密文存放、使用时解密),确保安全;
          // 本示例以用户名和密码保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量(环境变量名称请根据自身情况进行设置)EXAMPLE_USERNAME_ENV和EXAMPLE_PASSWORD_ENV。
          password = os.Getenv("EXAMPLE_PASSWORD_ENV")
          client := redis.NewClient(&redis.Options{
              Addr:     "xx.xx.xx.xx:8635",  //步骤1获取到的负载均衡地址
              Password: password, 
              DB:       0,  // 使用默认的0号数据库
          })
          pong, err := client.Ping().Result()
          fmt.Println(pong, err)
          err = client.Set("key1", "value1", 0).Err()
          if err != nil {
              panic(err)
          }
          val, err := client.Get("key1").Result()
          if err != nil {
              panic(err)
          }
          fmt.Println("key1", val)
      }

      预期输出为:

      PONG 
      key1 value1
      • 使用go-redis连接GeminiDB Redis时,需要使用普通模式,不能使用集群模式,如上示例代码所示。
      • 上述实例代码中的GeminiDB Redis地址和密码,请根据实际情况填写。
    • 使用集群方式连接GeminiDB Redis集群
      package main
      import (
          "fmt"
          "github.com/go-redis/redis"
      )
      func main() {
      client := redis.NewClusterClient(&redis.ClusterOptions{
               Addrs: []string{ // 步骤1获取到的负载均衡地址
                   " xx.xx.xx.xx:8635",
               },
               Password:     "xx", // 密码
           })
          pong, err := client.Ping().Result()
          fmt.Println(pong, err)
      
          err = client.Set("key1", "value1", 0).Err()
          if err != nil {
              panic(err)
          }
          val, err := client.Get("key1").Result()
          if err != nil {
              panic(err)
          }
          fmt.Println("key1", val)
      }