Memory leaks 在StackExchange.Redis中触发多个命令会导致大量内存消耗

Memory leaks 在StackExchange.Redis中触发多个命令会导致大量内存消耗,memory-leaks,stackexchange.redis,Memory Leaks,Stackexchange.redis,在这种情况下 ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost"); IDatabase db = redis.GetDatabase(1); foreach (var x in Enumerable.Range(0,5000000)) { db.StringIncrement("K:"+x, 1, StackExchange.Redis.CommandFlags.FireAndForget);

在这种情况下

ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost");
IDatabase db = redis.GetDatabase(1);
foreach (var x in Enumerable.Range(0,5000000))
{
    db.StringIncrement("K:"+x, 1, StackExchange.Redis.CommandFlags.FireAndForget);
}

内存消耗有一个快速的峰值,达到大约300MB,并且在进程结束时没有被释放。如果我随后强制执行GC.Collect命令,它将返回到起始级别。这是一个问题,因为当我在循环中添加更多的命令时,内存消耗会变得更大,显然会导致32位进程内存不足。发生这种情况的原因是什么?

使用Execute(FireAndForget)事务进行相同的观察。没有它,内存是可以的,但速度较慢。我还没有检查,但我怀疑请求的累积速度快于可以交付的速度,这就是原因。