什么是关闭持久连接的正确方法?

时间:2015-06-23 16:19:21

标签: go connection

我的情况是:与Redis连接的长时间运行的服务器。此服务器等待SIGTERM信号终止。在终止我的申请后,保证释放连接的正确方法是什么?

我知道延迟 - 非常好,但不适用于持久连接,因为我不想为每个操作打开与Redis的连接。

谢谢!

1 个答案:

答案 0 :(得分:1)

如果您希望确保在退出之前执行某些代码块,您仍然会使用fork。不同之处在于它的范围。连接和延迟语句的范围应该相同。我不知道您的应用程序是什么,但为了提供一个具体的示例,您需要在您的命令行应用程序的主要部分中关闭连接,而不是在读取和写入的方法中。

你说"因为我不想为每次操作打开与Redis的连接"但是,如果将某个方法的范围中的关闭推迟到单个IO操作的范围内,那么这只会导致延迟问题。如果您在上面的范围内执行延迟单个操作(所有操作都发生),那么它将按照您的要求执行;

defer
编辑:正如评论中所指出的那样,延期陈述的执行并不能保证。我只想说明你可以推迟在应用程序顶层关闭连接。