node.js - 为 NodeJS Lambda 函数重用 Redis 连接

标签 node.js 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 客户端连接,请将其定义为处理程序外部的全局连接。

const redis = require('redis');
const redis_client = redis.createClient({
    host: 'hostname',
    port: 6379
});

exports.handler = (event, context, callback) => {
    redis_client.set("foo", "bar");

    redis_client.get("foo", function(err, reply) {
        redis_client.unref();
        callback(null, reply);
    });
};

关于node.js - 为 NodeJS Lambda 函数重用 Redis 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46793670/

相关文章:

javascript - mongo/express 通过 id 获取用户获取对象 = null

typescript - typescript 中的lambda表达式类型

java - 如何将 "nested for each"转换为 Java 8 Lambda/Stream 构造?

node.js - 用户之间的实时聊天,就像在社交网络中一样 [Laravel + Node + Redis]

javascript - 如何使用 NodeJS 处理大量文本分隔文件

css - 使用 NPM node-sass 查看 SASS 文件

C# 如何解决 Func<T, bool> 中的逆变问题?

node.js - Yii2 Node 如何通过用户ID获取redis session key

redis - 仅在尚未设置时才设置原子

node.js - 如何在 Mongoose 中查询嵌套数组