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 个连接,而不是重用单个连接?
为每个函数手动创建/处置连接会更安全吗?
尽管单个函数执行可能只需要几秒钟,但函数实例(服务器)会被多个请求重用。实际上,随着传入请求的持续流,每个实例的寿命很长(几分钟到几小时)。
数据库连接应在同一实例上执行的调用之间重用。
静态字段初始化一次,然后在多次执行中重用,因此您的代码不会创建 10000 个连接,但可能是 1、2 或 3 个连接,具体取决于比例控制器将创建多少个实例。
当实例出现故障时,您的应用程序域将被回收,因此与 Redis 的连接将被终止。
我建议您继续使用您引用的代码。
| 归档时间: |
|
| 查看次数: |
1322 次 |
| 最近记录: |