【问题标题】:Redis and Google Cloud FunctionsRedis 和谷歌云函数
【发布时间】:2021-07-03 06:50:17
【问题描述】:

我将ioredisset 值用于redis 企业实例。

  1. 如何在几秒钟后关闭连接以减少创建的客户端数量?
  2. 我是否需要关闭连接?
  3. 是否每次调用都会产生一个 redis 客户端?
  4. 我需要 VPC 连接器吗?
  5. 如何确保函数在同一个 ip:port 上运行以防止创建其他实例
import * as functions from "firebase-functions";

import Redis = require("ioredis");
const redis = new Redis("redis://default:jMSNpTm3JXs1@redis-15360.c228.us-central1-1.gce.cloud.redislabs.com:15360");

export const SaveRecord = functions.https.onCall(async (data,context)=>{
  const {record,recordID} = data;
  try{
    var result =  await redis.multi().set(recordID, record).expire(recordID,3600).exec();
    return result;
  }catch(e){
    console.log(e);
    return "error";
  }
})


【问题讨论】:

  • 你的redis实例在哪里托管?在谷歌云上?在记忆库中?其他地方?
  • Redis 企业云
  • 您是从市场上安装的吗?您是否看到项目中部署的基础架构?
  • 不...在初始化时调用它
  • 我没抓到你。你是如何初始化你的 Redis 云实例的?它在哪里托管?

标签: redis google-cloud-functions ioredis


【解决方案1】:

我从未在我的项目中部署过 Redis Cloud Enterprise,但我已经可以提供这些答案

1,2,3。您不需要在每个连接处都关闭连接。在您的代码中,您开始(第 4 行)与 Redis 的连接,并将其存储在全局变量中(在全局范围内,而不是在函数体中)。

这意味着,当 Cloud Functions 实例启动时,它会调用所有全局代码(您的前 4 行,然后调用您的函数。redis 变量保留在 Cloud Functions 调用之间。

但是,您需要检查 redis Cloud 默认连接超时,并能够在连接关闭的情况下执行重新连接(代码中的异常处理)。

关于connexion关闭,也要看Redis Cloud的配置:空闲的connexion会自动关闭吗?如果没有,那就很难了。尝试在 1 小时或更短的空闲活动后通过 Redis 服务器配置关闭空闲连接。 (Cloud Functions 实例通常在 30 分钟不活动后卸载,无需任何 Google Cloud 承诺)。

  1. 是的;如果您检查您的 URL 上注册的 IP(例如nelookup redis-15360.c228.us-central1-1.gce.cloud.redislabs.com),您将在 172.26.x.x 中找到一个 URL。这是一个 RFC 1918 私有 IP。 DNS 解析是外部的(向 redislab URL 询问服务器的 IP),但目标服务器在您的项目内部。您只能路由内部流量。

  2. Cloud Functions 服务根据 HTTP 流量创建和销毁实例。您无法阻止实例的创建或销毁,它是无服务器的。同样,您没有与 Cloud Functions 实例关联的 IP/PORT,它是无服务器的。如果您只想拥有 1 个 Cloud Functions 实例,可以将 max instance 设置为 1。但是,请注意,Cloud Functions 在同一实例上一次只能处理 1 个请求。 max instance 为 1,是否有 2 个并发请求,1 个会被处理,另一个会等待,10 秒后会返回 417 HTTP 错误。

【讨论】:

  • 感谢您的洞察力。我将初始化移动到函数内部。希望它不会改变交易
  • 如果您更改它,这意味着您将“支付”每个请求的初始化持续时间,而不是每个创建的实例一次。它应该更容易管理,但不是最有效的!
猜你喜欢
  • 1970-01-01
  • 2020-11-21
  • 1970-01-01
  • 2019-02-15
  • 2018-12-07
  • 2018-10-02
  • 2021-01-22
  • 1970-01-01
  • 2021-09-21
相关资源
最近更新 更多