我正在使用ioredis对redis企业实例进行set值。
H 111如何确保功能在相同的ip:port上运行,以防止其他实例<>H 213/代码>G 214的创建
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";
}
})发布于 2021-07-05 13:15:08
我从未在我的项目中部署过,但我已经可以提供以下答案
1,2,3.你不需要在每个连接处关闭连接。在代码中,启动(第4行)与Redis的连接,并将其存储在全局变量中(在全局范围内,而不是在函数体中)。
这意味着,当云函数实例启动时,它会调用所有全局代码(前4行,然后调用函数)。redis变量保存在云函数调用之间。
但是,您需要检查redis Cloud默认的连接超时,并能够在关闭连接的情况下执行重新连接(代码中的异常处理)。
关于连接关闭,它还依赖于Redis配置:空闲连接是否自动关闭?如果没有,这将是困难的。在空闲1小时或更短时间后,尝试通过Redis服务器配置关闭空闲连接。(云功能实例通常在不活动30分钟后卸载,没有任何Google承诺)。
nelookup redis-15360.c228.us-central1-1.gce.cloud.redislabs.com),您将在172.26.x.x中找到一个URL。这是一个RFC 1918的私人IP。DNS解析是外部的(询问服务器的IP地址redislab URL ),但目标服务器是项目的内部服务器。您只能路由内部通信量。https://stackoverflow.com/questions/68233861
复制相似问题