首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Redis和Google函数

问Redis和Google函数
EN

Stack Overflow用户
提问于 2021-07-03 06:50:17
回答 1查看 480关注 0票数 0

我正在使用ioredis对redis企业实例进行set值。

  1. 如何在几秒钟后关闭连接以减少创建的客户端数量?
  2. 需要完全关闭连接吗?
  3. 是否每次调用都会产生redis客户端?
  4. 是否需要VPC连接器?

H 111如何确保功能在相同的ip:port上运行,以防止其他实例<>H 213/代码>G 214的创建

代码语言:javascript
复制
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";
  }
})
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-05 13:15:08

我从未在我的项目中部署过,但我已经可以提供以下答案

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

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

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

关于连接关闭,它还依赖于Redis配置:空闲连接是否自动关闭?如果没有,这将是困难的。在空闲1小时或更短时间后,尝试通过Redis服务器配置关闭空闲连接。(云功能实例通常在不活动30分钟后卸载,没有任何Google承诺)。

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

  1. 云函数服务根据HTTP流量创建和销毁实例。您无法阻止实例的创建或破坏,它是无服务器的。类似地,您没有与云函数实例相关联的IP/端口,它是无服务器的。如果您只想拥有一个云函数实例,可以将最大实例设置为1。但是,请注意,云函数一次只能处理同一个实例上的一个请求。当最大实例为1时,您有2个并发请求,1个将被处理,另一个将等待,10秒后将返回417个HTTP错误。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68233861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档