1

我正在尝试将我的 go 应用程序连接到 heroku redis 数据库。使用此代码:

(使用“github.com/go-redis/redis/v8”)

opt, err := redis.ParseURL("redis://:PASSWORD@AWS-HOST:15670/0")
    if err != nil {
        panic(err)
    }
    rdb := redis.NewClient(opt)
    usu := rdb.Get(ctx, userID)

但我收到了这个错误:

get 61d4bb472db95c17de8c: wsarecv: 一个现有的连接被远程主机强行关闭。

Heroku 凭证

我感谢任何帮助!

4

1 回答 1

0

尝试RDB关闭持久性。如果您仍然收到相同的错误,则意味着 Heroku 存在问题。

RDB 需要经常 fork() 以便使用子进程在磁盘上持久化。如果数据集很大,fork() 可能会很耗时,并且如果数据集很大并且 CPU 性能不是很好,可能会导致 Redis 停止为客户端服务几毫秒甚至一秒。

为了更好地理解,请参阅此链接:https ://redis.io/topics/persistence

确保为连接创建一个实例并在任何地方使用它,它是线程安全的。

还要确保:

TCP keepalive 已启用 -> 它将防止意外的连接关闭事件。

你可以参考这个链接:https ://redis.io/topics/clients

增加opt.MaxRetries.

于 2022-01-10T14:00:10.330 回答