我正在使用 Redis 云控制台作为数据库,我没有在我的系统上下载 Redis 客户端,因为我只是第一次尝试在一些个人项目中使用它,我正在尝试连接到它,我正在使用 redis Go 客户端,** 首先** 在 Redis Cloud 控制台中,当我尝试连接到我的免费数据库时,在“选择您的客户端”选项中,我没有看到下拉列表中提到的 Go,尽管它在文档中存在,其次我从文档和 Nodejs 客户端连接教程中获得了帮助,并尝试将其连接到我的主机地址和端口,但它没有连接。 这是我得到的错误: 2024/04/17 14:50:17 无法连接到 Redis: dial tcp [::1]:6379: connectex: 由于目标机器主动拒绝而无法建立连接。
我没有尝试连接到6379端口,我指定的数据库端口与地址中指定的不同。
这是我尝试运行的代码片段:
import (
"context"
"encoding/json"
"log"
"net/http"
"fmt"
"os"
"github.com/redis/go-redis/v9"
"github.com/gorilla/mux"
"github.com/joho/godotenv"
)
// the main function for connection :
func main() {
err := godotenv.Load()
if err != nil {
fmt.Println("Error loading .env file")
}
// Connect to Redis
rdb = redis.NewClient(&redis.Options{
Addr: os.Getenv("REDIS_ADDRESS"),
Password: os.Getenv("REDIS_PW"),
DB: 0, // use default DB
})
// Test Redis connection
_, err = rdb.Ping(context.Background()).Result() // Provide context
if err != nil {
log.Printf("Failed to connect to Redis: %v", err)
}
//I am using env variables in a separate file .
}
检查你的环境变量如何?
REDIS_ADDRESS
我使用
miniredis
检查了你的代码,这是 Golang 单元测试中 redis 的测试服务器。 https://github.com/alicebob/miniredis
你的代码本身没有问题
package main
import (
"context"
"log"
"github.com/alicebob/miniredis/v2"
"github.com/redis/go-redis/v9"
)
func main() {
mockRedis, _ := miniredis.Run()
redisClient := redis.NewClient(&redis.Options{
Addr: mockRedis.Addr(),
DB: 0,
})
log.Printf("MockRedis Addr: %s\n", mockRedis.Addr())
result, err := redisClient.Ping(context.Background()).Result()
if err != nil {
log.Printf("Failed to connect to Redis: %v", err)
} else {
log.Printf("Succeeded to connect to Redis: %v\n", result)
}
}
日志是
2024/04/20 10:34:19 MockRedis Addr: 127.0.0.1:51314
2024/04/20 10:34:19 Succeeded to connect to Redis: PONG