为什么错误 没有连接可用于处理此操作:在 C# 控制台应用程序中写入 Redis 缓存时 SETEX 以及如何解决它



我正在尝试将包含大约 5000 条记录的字典中的记录写入 Redis 缓存。但有时我会收到以下异常,我不知道为什么会出现此错误,我已经在互联网上检查过,但找不到此问题的任何解决方案或根本原因。

using (ConnectionMultiplexer redis = ConnectionMultiplexer.Connect(_configuration.GetConnectionString("redis_server")))
{
IDatabase db = redis.GetDatabase();

foreach (KeyValuePair<string, string> keyValuePair in _dictAllData)
{
db.StringSet(keyValuePair.Key, keyValuePair.Value, TimeSpan.FromMinutes(30));
}
}

例外

没有连接可用于为此操作提供服务:SETEX 747712; IOCP:(忙=0,空闲=1000,最小值=4,最大值=1000(,工作线程: (忙=0,空闲=32767,最小值=4,最大值=32767(,本地CPU:不适用

编辑:

StackExchange.Redis 版本:2.0.601

池中的连接似乎用完了(客户端(。此外,在性能方面,在这种情况下,一次一组是不好的。

您应该使用批处理或流水线。请参阅 Stackexchange.Redis 中的流水线与批处理。它有代码示例。

既然你似乎不关心回应,请考虑flags: CommandFlags.FireAndForget.请参阅管道和多路复用器。

最新更新