重用NodeJS Lambda函数的Redis连接

我写了下面的Lambda函数:

exports.handler = (event, context, callback) => { const redis = require('redis'); const redis_client = redis.createClient({ host: 'hostname', port: 6379 }); redis_client.set("foo", "bar"); redis_client.get("foo", function(err, reply) { redis_client.quit(); callback(null, reply); }); }; 

这工作正常。 但是,我想重用Lambda调用之间的Redis连接来提高性能。 理论上这可以通过将createClient()移到处理程序的外部来实现。 但是,由于“redis_client.quit()”行,该连接被终止。 如果我不退出客户端,则Lambda函数将超时。

使用AWS Lambda时,在NodeJS中重用Redis的正确方法是什么?

正如您已经提到的,您的方法是正确的,但是您必须记住,您的Redis实例具有连接限制,示例AWS Elasticache maxclients设置为65000. AWS当前允许并行执行1k个Lambda,因此请小心外部连接。

目前,Lambda外部数据库连接没有银弹。 一种可能的解决scheme是创build处理DB之间通信的内部Web API服务。