更新时间:2024-11-28 GMT+08:00
分享

使用指南

  1. 在go.mod文件中引入依赖,即引入MAS-GO-SDK。

    github.com/huaweicloud/devcloud-go

  2. 结合配置项说明,添加配置文件或者配置信息。

    • 配置文件示例config_Redis.yaml
      props:
        version: v1
        appId: xxx
        monitorId: xxxx
        cloud: xxxx
        region: xxxxx
        azs: az1
      etcd:
        address: xxx.xxx.xxx.xxx:xxxx
        apiVersion: v3
        username: xxxx
        password: xxxx
        httpsEnable: false
      Redis:
        nearest: dc1
        asyncRemoteWrite:
          retryTimes: 4
        connectionPool:
          enable: true
        asyncRemotePool:
          persist: true
          threadCoreSize: 10
          taskQueueSize: 5
          persistDir: dataDir/
      servers:
        dc1:
          hosts: xxx.xxx.xxx.xxx:xxxx
          password: xxxxxx
          type: normal# cluster, master-slave, normal
          cloud: xxxx
          region: xxxxx
          azs: az1
          pool:
            maxTotal: 100
            maxIdle: 8
            minIdle: 0
            maxWaitMillis: 10000
            timeBetweenEvictionRunsMillis: 1000
        dc2:
          hosts: xxx.xxx.xxx.xxx:xxxx, xxx.xxx.xxx.xxx:xxxx
          password: xxxxxx
          type: cluster# cluster, master-slave, normal
          cloud: xxxx
          region: xxxxx
          azs: az1
          pool:
            maxTotal: 100
            maxIdle: 8
            minIdle: 0
            maxWaitMillis: 10000
            timeBetweenEvictionRunsMillis: 1000
      routeAlgorithm: single-read-write# local-read-single-write, single-read-write, double-write
      active: dc1
    • 配置信息
      func RedisConfiguration() *config.Configuration {
          return &config.Configuration{
              Props: &mas.PropertiesConfiguration{
                  Version: "v1",
                  AppID: "xxx",
                  MonitorID: "xxxx",
                  Cloud: "xxx",
                  Region: "xxxxx",
                  Azs: "az1",
              },
              EtcdConfig: &etcd.EtcdConfiguration{
                  Address: "xxx.xxx.xxx.xxx:xxxx",
                  APIVersion: "v3",
                  Username: "xxxx",
                  Password: "xxxx",
                  HTTPSEnable: false,
              },
              RedisConfig: &config.RedisConfiguration{
                  Nearest: "dc1",
                  AsyncRemoteWrite: &config.AsyncRemoteWrite{
                      RetryTimes: 4,
                  },
                  ConnectionPoolConfig: &config.RedisConnectionPoolConfiguration{
                      Enable: true,
                  },
                  AsyncRemotePoolConfiguration: &config.AsyncRemotePoolConfiguration{
                      Persist: true,
                      ThreadCoreSize: 10,
                      TaskQueueSize: 5,
                      PersistDir: "dataDir/",
                  },
                  Servers: map[string]*config.ServerConfiguration{
                      "dc1": {
                          Hosts:    "xxx.xxx.xxx.xxx:xxxx",
                          Password: "xxxxxx",
                          Type:     "normal",
                          Cloud: "xxxx",
                          Region: "xxxx",
                          Azs: "az1",
                          ConnectionPool: &config.ServerConnectionPoolConfiguration{
                              MaxTotal: 100,
                              MaxIdle: 8,
                              MinIdle: 0,
                              MaxWaitMillis: 10000,
                              TimeBetweenEvictionRunsMillis: 1000,
                          },
                      },
                      "dc2": {
                          Hosts:    "xxx.xxx.xxx.xxx:xxxx,xxx.xxx.xxx.xxx:xxxx",
                          Password: "xxxxxx",
                          Type:     "cluster",
                          Cloud: "xxxx",
                          Region: "xxxx",
                          Azs: "az1",
                          ConnectionPool: &config.ServerConnectionPoolConfiguration{
                              MaxTotal: 100,
                              MaxIdle: 8,
                              MinIdle: 0,
                              MaxWaitMillis: 10000,
                              TimeBetweenEvictionRunsMillis: 1000,
                          },
                      },
                  },
              },
              RouteAlgorithm: "single-read-write",
              Active:         "dc1",
          }
      }

  3. 初始化创建DevsporeClient客户端。

    • 配置文件方式创建
      import (
          "context"
          "log"
      
          "github.com/huaweicloud/devcloud-go/redis"
      )
      var (
          DevSporeClient *redis.DevsporeClient // Redis 客户端
      )
      func init() {
          DevSporeClient = redis.NewDevsporeClientWithYaml("./resources/config_Redis.yaml")
          if_, err := DevSporeClient.Ping(context.Background()).Result(); err != nil {
              log.Fatal(err)
          }
          log.Println("INFO: init redis successed.")
      }
    • 配置信息方式创建
      import (
          "context"
          "log"
      
          "github.com/huaweicloud/devcloud-go/redis"
      )
      var (
          DevSporeClient *redis.DevsporeClient // redis 客户端
      )
      func init() {
          DevSporeClient = redis.NewDevsporeClient(RedisConfiguration())
          if_, err := DevSporeClient.Ping(context.Background()).Result(); err != nil {
              log.Fatal(err)
          }
          log.Println("INFO: init redis successed.")
      }

  4. 在需要执行Redis操作的地方使用DevsporeClient执行Redis操作。

    import (
        "context"
        "demo/conf"
        "time"
    
        "github.com/go-redis/redis/v8"
    )
    func set(ctx context.Context, key, val string, time time.Duration) *redis.StatusCmd {
        return conf.DevSporeClient.Set(ctx, key, val, time)
    }
    func get(ctx context.Context, key string) *redis.StringCmd {
        return conf.DevSporeClient.Get(ctx, key)
    }

相关文档