Redis 最佳实践建议使用长期存在的 ConnectionMultiplexer。不过,我想在 azure 消费函数中使用 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 个连接,而不是重用单个连接?
手动创建/处置每个函数的连接会更安全吗?
最佳答案
尽管单个函数执行可能只需要几秒钟,但函数实例(服务器)会被多个请求重用。实际上,随着传入请求的持续流,每个实例的生命周期很长(几分钟到几小时)。
应在同一实例上执行的调用之间重用数据库连接。
静态字段初始化一次,然后在多次执行中重复使用,因此您的代码不会创建 10000 个连接,但可能会创建 1、2 或 3 个连接,具体取决于比例 Controller 将创建多少个实例。
当实例出现故障时,您的应用程序域将被回收,因此与 Redis 的连接将被终止。
我建议您继续使用您引用的代码。
关于与 Azure 消费函数结合使用的 Redis 连接最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52093109/