与 Azure 消费函数结合使用的 Redis 连接最佳实践

Red*_*ood 2 redis azure-functions

Redis 最佳实践建议使用长期存在的 ConnectionMultiplexer。不过,我想在天蓝色的消费函数中使用 Redis,该函数可能只存在几秒钟(但运行很多次)。

我想知道我是否有这样的代码:

        private static Lazy<ConnectionMultiplexer> lazyRedisConnection = new Lazy<ConnectionMultiplexer>(() =>
    {
        string cacheConnection = ConfigurationManager.AppSettings["RedisKey"].ToString();
        return ConnectionMultiplexer.Connect(cacheConnection);
    });

    public static ConnectionMultiplexer RedisConnection
    {
        get
        {
            return lazyRedisConnection.Value;
        }
    }
Run Code Online (Sandbox Code Playgroud)

在 Azure 消耗函数上,运行例如 10000 次。由于 Azure 消耗函数的工作方式,这实际上会创建 10000 个连接,而不是重用单个连接?

为每个函数手动创建/处置连接会更安全吗?

Mik*_*kov 5

尽管单个函数执行可能只需要几秒钟,但函数实例(服务器)会被多个请求重用。实际上,随着传入请求的持续流,每个实例的寿命很长(几分钟到几小时)。

数据库连接应在同一实例上执行的调用之间重用。

静态字段初始化一次,然后在多次执行中重用,因此您的代码不会创建 10000 个连接,但可能是 1、2 或 3 个连接,具体取决于比例控制器将创建多少个实例。

当实例出现故障时,您的应用程序域将被回收,因此与 Redis 的连接将被终止。

我建议您继续使用您引用的代码。