go-redis连接到Amazon Elastic Redis Cluter

vql8enpb  于 2023-04-27  发布在  Go
关注(0)|答案(3)|浏览(205)

嗨,我如何在go-redis sdk的帮助下将我的本地golang代码连接到Amazon Elastic Redis集群?

fdx2calv

fdx2calv1#

通过使用github.com/go-redis/redis包,您可以连接Amazon Elastic Redis集群

import "github.com/go-redis/redis/v8"

client := redis.NewClient(&redis.Options{
    Addr:     "the-aws-redis-cluster-host:port",
    Password: "optional-password",
})

state, err := client.Ping(context.Background()).Result()
if err != nil {
    panic(err)
}

fmt.Println(state)

在从本地连接到AWS redis集群之前,请确保

  • 群集示例配置为接受来自您的IP的连接
  • 与允许端口6379上的传入通信的群集连接的安全组。
qco9c6ql

qco9c6ql2#

使用6.0.0以下版本的redis时需要注意的是,您需要将用户名留空。如果您的redis需要,您还需要设置tls。下面是一个示例代码:

import (
    "context"
    "crypto/tls"
    redisClient "github.com/redis/go-redis/v9"
    "strings"
    "fmt"
)

// URL example: redis://username:password@host:port
opt, err := redisClient.ParseURL(${URL})
if err != nil {
    panic(err)
}

// Remove username to avoid error: ERR wrong number of arguments for 'auth' command when using redis cloud
// Root cause: Redis before 6.0.0 does not support username in URL
// Reference: https://github.com/redis/go-redis/issues/1343
opt.Username = ""
opt.ClientName = ${ClientName}
opt.DB = ${DB}
opt.PoolSize = ${ConnectionPoolSize}
opt.MinIdleConns = ${ConnectionMinimumIdleSize}

// Set TLS config for redis cloud
if !strings.Contains(${URL}, "localhost") {
    opt.TLSConfig = &tls.Config{
        MinVersion: tls.VersionTLS12,
    }
}

rdb = redisClient.NewClient(opt)

// Test connection
_, err = rdb.Ping(context.Background()).Result()
if err != nil {
    panic(err)
}

fmt.Println("Successfully")
djmepvbi

djmepvbi3#

安装go-redis包:

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

导入go-redis包:

package main
import (
   "context"
   "github.com/go-redis/redis/v8"
)

将Redis端点和凭证传递给redis.NewClient函数,创建一个新的Redis客户端:

Client := redis.NewClient(&redis.Options{
   Addr:     "YourRedisEndpoint:YourRedisPort",
   Password: "YourRedisPassword",
   DB:       0, // use default DB
})

您必须将YourRedisEndpointYourRedisPortYourRedisPassword替换为您的Amazon Elastic Redis集群的实际值。请在您的AWS帐户的Elasticache控制台中查找这些值。

使用Redis客户端进行Redis操作,在Redis中设置值可以使用Set方法:

ctx, cancel := context.WithTimeout(context.Background(), time.Duration(time.Second*10))
defer cancel()
err := Client.Set(ctx, "MyKey", "MyValue", 0).Err()
if err != nil {
   fmt.Println("client set error : ",err)
}

这将在Redis中将MyKey键的值设置为MyValue
您现在可以使用go-redis包连接到您的Amazon Elastic Redis集群,并通过Golang代码执行Redis操作。

相关问题