与Azure消费功能一起使用的Redis连接最佳实践

时间:2018-08-30 09:05:28

标签: 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;
        }
    }

在运行的Azure消费功能上,例如10000次由于Azure消费功能的工作方式,实际上会创建10000个连接,而不是重用一个连接?

按功能手动创建/设置连接会更安全吗?

1 个答案:

答案 0 :(得分:4)

即使单个函数执行可能只花费几秒钟,但函数 instance (服务器)仍可用于多个请求。实际上,由于传入请求源不断,每个实例的寿命很长(几分钟到几小时)。

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

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

当实例发生故障时,您的App Domain将被回收,因此与Redis的连接将被终止。

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