我在多线程环境下批量创建Redis dB中的密钥,出于某种原因在我的ASP .NET MVC Web应用程序。
而我为redis客户端使用ServiceStack.Redis。批量在Redis C#中创建密钥 - SocketException:通常只允许使用每个套接字地址(协议/网络地址/端口)
我创建了所有必需的Redis的操作,即把一个静态类,得到..
在静态类,我创建的Redis正在为其配置一旦通话结束每次调用一个新的实例(使用使用)
代码是这样:
for (int i = 0; i < 100000; i++)
{
using (RedisClient Client = new RedisClient(_ReplicaHost))
{
Client.AddItemToSet(key, value);
}
}
然而,一段时间后,我获得以下错误:
ServiceStack.Redis.RedisException: could not connect to redis Instance at xxx-xxx.xxxx.0001.use1.cache.amazonaws.com:6379 ---> System.Net.Sockets.SocketException: Only one usage of each socket address (protocol/network address/port) is normally permitted xxx.xx.x.xxx:6379
at System.Net.Sockets.Socket.Connect(IPAddress[] addresses, Int32 port)
at System.Net.Sockets.Socket.Connect(String host, Int32 port)
at ServiceStack.Redis.RedisNativeClient.Connect()
我看了看网,发现有可能的原因是插座用尽(reference)
由于应用程序的多线程环境下运行我不得不请使用PooledRedisClientManager
或BasicRedisClientManager
的,但我不是确定在我的案例中选择哪一个,以及如何实现,不管多个操作如何,都不应该有套接字用尽的问题。
什么应该是正确的方法/解决方案?
我可以知道downvote的原因吗? – JerryGoyal