首页 > 解决方案 > 将 go 与 redis 一起使用 - 无法连接

问题描述

我正在尝试在 azure 中连接到 Redis 服务

我使用以下代码:

    import (
        "fmt"
        "os"
        "github.com/go-redis/redis"
    )


func main() {
     uri := os.Getenv("uri")
     fmt.Println("uri is", uri)
     opt, err := redis.ParseURL(uri)
     if err != nil {
         fmt.Println(err)
      }
     fmt.Println("addr is:”, opt.Addr)
     fmt.Println("db is:”, opt.DB)
     fmt.Println("password is:”, opt.Password)
     //connect to redis
     client = redis.NewClient(opt)
     //Here I want to get connection
     pong, err := client.Ping().Result()

https://github.com/go-redis/redis

https://godoc.org/github.com/go-redis/redis#example-ParseURL

打印的数据就像我能够连接字符串一样

uri is rediss://:bBMfQ7wFdkPHr8u%2B2zzNOzUpy85OEjYv7KbPZd8B89M%3D@e49ab3c6-8f72-416a-a6c1-ddfe75gf200e.redis.cache.windows.net:6380


addr is: e49ab3c6-8f72-416a-a6c1-ddfe75gf200e.redis.cache.windows.net:6380
db is: 0
password is: bBMfQ7wFdkPHr8u+2zzNOzUpy85OEjYv7KbPZd8B89M=

Redis 服务已启动并正在运行,我能够连接nodejs应用程序并获取数据,知道为什么我在 go 中遇到错误:

拨打 tcp 40.128.8.87:6380:连接:连接被拒绝

我们正在尝试将一些应用程序从 Nodejs 迁移到...

奇怪的是,在nodejs中,我使用了以下方法!

https://github.com/NodeRedis/node-redis

const redisClient = redis.createClient(process.env.uri);

redisClient.on("connect", () => console.log("Redis is connected"));

更新

我提供了一个没有 ssl的新实例,它也不起作用

这是日志

uri is redis://:TKq1n%2BO29jsSdIkoysXL%2Btwd6Xi0IO0KNxw%3D@2dca2dx1-20e0-48ca-83ed-20bf52e99b97.redis.cache.windows.net:6379
addr is 2dca2dx1-20e0-48ca-83ed-20bf52e99b97.redis.cache.windows.net:6379
db is 0
password is TKq1n+O29jsSdIkoysXL+twd6Xi0IO0KNxw=
 dial tcp 40.113.7.3:6379: connect: connection refused

知道我应该如何使用 GO api 正确连接到 redis 吗?

顺便说一句,当我连接到本地Redis 时它可以工作,但不能用于 azure 缓存

像这样

client := redis.NewClient(&redis.Options{
        Addr: "localhost:6379",
        Password: "",
        DB: 0,
    })

也许我错过了 Redis api 中的某些内容,因为我为 nodejs 做同样的事情(连接到同一个服务实例)并且它有效!

标签: azuregokubernetesredisazure-redis-cache

解决方案


推荐阅读