【问题标题】:integrating redis into serverless将 redis 集成到无服务器中
【发布时间】:2018-02-05 06:18:02
【问题描述】:

我正在考虑将缓存服务与无服务器集成。

我决定使用redis。但是通过阅读npm redis,您似乎需要在完成请求后调用client.quit()

无服务器的工作方式似乎是生成实例,然后在不使用时将其删除。所以我想知道在删除无服务器实例时是否有办法退出 redis 连接。

或者我是否只需要在每个请求上实际启动一个连接,然后在每个请求完成之前退出连接。

我希望我可以在应用程序状态而不是请求状态下执行此操作,这样我就不必产生如此多的连接。

【问题讨论】:

    标签: redis node-redis serverless-framework


    【解决方案1】:

    没有。可以重用连接。它不需要对每个请求都启动新连接。

    如果您使用redis.creatClient() 创建连接,则可以始终在您的应用中使用此连接。如果连接断开,它具有重新连接机制。所以在你的app开发中,你不需要关心连接问题,只要获取一个全局连接,一直使用就可以了。

    【讨论】:

    • 所以我根本不需要打电话给client.quit() 吗?从我读到的如果你不调用它,它不会关闭连接。
    • 是的,如果你不调用client.quit(),它不会关闭连接。但是为什么你调用client.quit(),你的app在运行,还需要这个client给redis发送命令,你还是需要这个connection。因此,当您的应用程序运行时,它会保持与 redis 的连接,每当您想向 redis 发送命令时,请使用此客户端来执行此操作。如果你为每个请求都创建一个客户端,那将是一笔不小的开销。
    • 您应该将客户端设置为全局变量,并且代码中的任何地方都可以使用它。
    • 当没有请求发送时,Serverless 会自动关闭实例。这就是为什么我需要关闭它。 lambda 功能会在请求到来时启动一个实例,但在一段时间后,它会停止它。
    • 当你的实例运行时,只是使用一个连接来处理所有redis命令请求,当你的实例正在关闭时,关闭连接。
    猜你喜欢
    • 2018-08-06
    • 2023-03-10
    • 2020-02-19
    • 2013-02-25
    • 2017-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-20
    相关资源
    最近更新 更多