Zha*_* Yi 7 amazon-web-services aws-lambda
我在 AWS lambda 中有以下代码:
const cache = {};
exports.handler = async (event) => {
// TODO implement
if (cache[event.key]) {
console.log('read from cache');
return cache[event.key];
}
console.log('generate value');
cache[event.key] = Math.random()
return cache[event.key];
};
Run Code Online (Sandbox Code Playgroud)
当我运行 lambda 时,我可以read from cache在日志中看到,这意味着 lambda 在缓存内存中缓存了一些值。当 lambda 变热时,它的记忆会保留吗?这是否意味着我可以利用该内存进行一些缓存以提高性能?
可以在 Lambda 调用之间保留某些内容(假设调用访问同一个 MicroVM),但您的应用程序不应依赖它来提高性能。
无法保证它会在 MicroVM 上持续多久,还要注意您存储在内存中的卷,因为如果没有足够的内存可用,这可能会影响 Lambda 的性能。如果您希望提高性能,请查看以下一些选项:
即使调用完成后,Lambda 容器仍保持活动状态。因此,容器内存中加载的任何数据都将在 Lambda 容器生命周期中可用。
因此,该内存可以用作缓存的杠杆。
如果您的应用程序是读取广泛的,则缓存中的数据将很有用。例如,在必须从数据库获取相同用户名的情况下,我们可以缓存该用户名以供将来调用。因此,降低了数据库查询的成本。
上述方法似乎有帮助,但也有一些缺点:
| 归档时间: |
|
| 查看次数: |
6273 次 |
| 最近记录: |