重用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服务。
- AWS Lambdafunction在部署后不起作用
- 在AWS lambda函数中使用require
- aws api网关,lambda和node express
- Ffmpeg无法访问aws labmda上的文件
- AWS lambda node.js
- 如何创build一个从HTTP / HTTPS API获取数据的Alexa Skill(在AWS Lambda上使用Node.js的“Alexa技能工具包”)
- 为什么AWS Lambda执行时间长,使用pg-promise
- 如何创build一个使用Express.js创build一个REST风格的API与亚马逊Api Getaway和lambda
- AWS lambda函数 – “发生错误:收到来自Lambda:Handled的错误响应”